mirror of
https://github.com/MariaDB/server.git
synced 2026-10-23 18:49:29 +03:00
Fix merge conflict
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -24,6 +24,7 @@ pcre/testdata/greppatN4 -text
|
||||
*.frm binary
|
||||
*.MYD binary
|
||||
*.MYI binary
|
||||
*.class binary
|
||||
|
||||
*.c diff=cpp
|
||||
*.h diff=cpp
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
|
||||
# Create MySQL cmake configure wrapper
|
||||
|
||||
die() { echo "$@"; exit 1; }
|
||||
|
||||
# Use a configure script that will call CMake.
|
||||
path=`dirname $0`
|
||||
cp $path/cmake_configure.sh $path/../configure
|
||||
|
||||
@@ -187,12 +187,16 @@ IF (WITH_ASAN)
|
||||
# gcc 4.8.1 and new versions of clang
|
||||
MY_CHECK_AND_SET_COMPILER_FLAG("-fsanitize=address -O1 -Wno-error -fPIC"
|
||||
DEBUG RELWITHDEBINFO)
|
||||
SET(HAVE_C_FSANITIZE ${HAVE_C__fsanitize_address__O1__Wno_error__fPIC})
|
||||
SET(HAVE_CXX_FSANITIZE ${HAVE_CXX__fsanitize_address__O1__Wno_error__fPIC})
|
||||
IF(HAVE_C_FSANITIZE AND HAVE_CXX_FSANITIZE)
|
||||
SET(WITH_ASAN_OK 1)
|
||||
ELSE()
|
||||
# older versions of clang
|
||||
MY_CHECK_AND_SET_COMPILER_FLAG("-faddress-sanitizer -O1 -fPIC"
|
||||
DEBUG RELWITHDEBINFO)
|
||||
SET(HAVE_C_FADDRESS ${HAVE_C__faddress_sanitizer__O1__fPIC})
|
||||
SET(HAVE_CXX_FADDRESS ${HAVE_CXX__faddress_sanitizer__O1__fPIC})
|
||||
IF(HAVE_C_FADDRESS AND HAVE_CXX_FADDRESS)
|
||||
SET(WITH_ASAN_OK 1)
|
||||
ENDIF()
|
||||
|
||||
30
CREDITS
30
CREDITS
@@ -1,24 +1,26 @@
|
||||
MariaDB is brought to you by the MariaDB Foundation, a non profit
|
||||
organization registered in the USA.
|
||||
|
||||
The current main members and sponsors of the MariaDB Foundation are:
|
||||
The current main sponsors of the MariaDB Foundation are:
|
||||
|
||||
MariaDB Corporation http://www.mariadb.com (2013 - 2016)
|
||||
Booking.com http://www.booking.com (2013 - 2016)
|
||||
Parallels http://www.parallels.com/products/plesk (2013 - 2016)
|
||||
Automattic http://automattic.com (2014 - 2016)
|
||||
Verkkokauppa.com http://verkkokauppa.com (2015 - 2016)
|
||||
Visma http://visma.com/ (2015 - 2016)
|
||||
Webyog http://webyog.com (2015 - 2016)
|
||||
Wikimedia Foundation http://wikimedia.org (2015 - 2016)
|
||||
Acronis http://acronis.com (2016)
|
||||
Booking.com http://www.booking.com (2013 - 2016)
|
||||
Development Bank of Singapore http://dbs.com (2016)
|
||||
MariaDB Corporation https://www.mariadb.com (2013 - 2016)
|
||||
Visma http://visma.com (2015 - 2016)
|
||||
Acronis http://acronis.com (2016)
|
||||
Nexedi https://www.nexedi.com (2016)
|
||||
Automattic https://automattic.com (2014 - 2016)
|
||||
Verkkokauppa.com https://www.verkkokauppa.com (2015 - 2016)
|
||||
Virtuozzo https://virtuozzo.com (2016)
|
||||
|
||||
For a full list of supporters and sponsors see
|
||||
For a full list of sponsors, see
|
||||
https://mariadb.org/about/supporters/
|
||||
and for individual contributors, see
|
||||
https://mariadb.org/donate/individual-sponsors/
|
||||
|
||||
You can also do this by running SHOW CONTRIBUTORS.
|
||||
You can also get the list of sponsors by running SHOW CONTRIBUTORS.
|
||||
|
||||
For all corporate memberships and sponsorships please contact the
|
||||
For all corporate sponsorships please contact the
|
||||
MariaDB Foundation Board via foundation@mariadb.org.
|
||||
|
||||
The MariaDB Foundation is responsible for the MariaDB source
|
||||
@@ -38,7 +40,7 @@ following services to the MariaDB community:
|
||||
To be able to do the above we need help from corporations and individuals!
|
||||
|
||||
You can help support MariaDB by becoming a MariaDB developer or a
|
||||
member or sponsor of the MariaDB Foundation. To donate or sponsor,
|
||||
sponsor of the MariaDB Foundation. To donate or sponsor,
|
||||
go to https://mariadb.org/donate/
|
||||
|
||||
You can get a list of all the main authors of MariaDB / MySQL by running
|
||||
|
||||
2
VERSION
2
VERSION
@@ -1,3 +1,3 @@
|
||||
MYSQL_VERSION_MAJOR=10
|
||||
MYSQL_VERSION_MINOR=1
|
||||
MYSQL_VERSION_PATCH=15
|
||||
MYSQL_VERSION_PATCH=18
|
||||
|
||||
@@ -235,8 +235,6 @@ my_bool
|
||||
get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
char *argument)
|
||||
{
|
||||
int error = 0;
|
||||
|
||||
switch(optid) {
|
||||
case 'c':
|
||||
opt_count_iterations= 1;
|
||||
@@ -284,8 +282,8 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
break;
|
||||
case '?':
|
||||
case 'I': /* Info */
|
||||
error++;
|
||||
break;
|
||||
usage();
|
||||
exit(0);
|
||||
case OPT_CHARSETS_DIR:
|
||||
#if MYSQL_VERSION_ID > 32300
|
||||
charsets_dir = argument;
|
||||
@@ -296,11 +294,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
if (error)
|
||||
{
|
||||
usage();
|
||||
exit(1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -240,13 +240,13 @@ static int process_selected_tables(char *db, char **table_names, int tables);
|
||||
static int process_all_tables_in_db(char *database);
|
||||
static int process_one_db(char *database);
|
||||
static int use_db(char *database);
|
||||
static int handle_request_for_tables(char *tables, size_t length, my_bool view);
|
||||
static int handle_request_for_tables(char *, size_t, my_bool, my_bool);
|
||||
static int dbConnect(char *host, char *user,char *passwd);
|
||||
static void dbDisconnect(char *host);
|
||||
static void DBerror(MYSQL *mysql, const char *when);
|
||||
static void safe_exit(int error);
|
||||
static void print_result();
|
||||
static uint fixed_name_length(const char *name);
|
||||
static size_t fixed_name_length(const char *name);
|
||||
static char *fix_table_name(char *dest, char *src);
|
||||
int what_to_do = 0;
|
||||
|
||||
@@ -577,7 +577,7 @@ static int process_selected_tables(char *db, char **table_names, int tables)
|
||||
}
|
||||
*--end = 0;
|
||||
handle_request_for_tables(table_names_comma_sep + 1, tot_length - 1,
|
||||
opt_do_views != 0);
|
||||
opt_do_views != 0, opt_all_in_1);
|
||||
my_free(table_names_comma_sep);
|
||||
}
|
||||
else
|
||||
@@ -588,16 +588,16 @@ static int process_selected_tables(char *db, char **table_names, int tables)
|
||||
view= is_view(table);
|
||||
if (view < 0)
|
||||
continue;
|
||||
handle_request_for_tables(table, table_len, (view == 1));
|
||||
handle_request_for_tables(table, table_len, view == 1, opt_all_in_1);
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
} /* process_selected_tables */
|
||||
|
||||
|
||||
static uint fixed_name_length(const char *name)
|
||||
static size_t fixed_name_length(const char *name)
|
||||
{
|
||||
const char *p;
|
||||
uint extra_length= 2; /* count the first/last backticks */
|
||||
size_t extra_length= 2; /* count the first/last backticks */
|
||||
DBUG_ENTER("fixed_name_length");
|
||||
|
||||
for (p= name; *p; p++)
|
||||
@@ -605,7 +605,7 @@ static uint fixed_name_length(const char *name)
|
||||
if (*p == '`')
|
||||
extra_length++;
|
||||
}
|
||||
DBUG_RETURN((uint) ((p - name) + extra_length));
|
||||
DBUG_RETURN((size_t) ((p - name) + extra_length));
|
||||
}
|
||||
|
||||
|
||||
@@ -616,13 +616,9 @@ static char *fix_table_name(char *dest, char *src)
|
||||
*dest++= '`';
|
||||
for (; *src; src++)
|
||||
{
|
||||
switch (*src) {
|
||||
case '`': /* escape backtick character */
|
||||
if (*src == '`')
|
||||
*dest++= '`';
|
||||
/* fall through */
|
||||
default:
|
||||
*dest++= *src;
|
||||
}
|
||||
*dest++= *src;
|
||||
}
|
||||
*dest++= '`';
|
||||
|
||||
@@ -664,7 +660,7 @@ static int process_all_tables_in_db(char *database)
|
||||
*/
|
||||
|
||||
char *tables, *end;
|
||||
uint tot_length = 0;
|
||||
size_t tot_length = 0;
|
||||
|
||||
char *views, *views_end;
|
||||
uint tot_views_length = 0;
|
||||
@@ -711,9 +707,9 @@ static int process_all_tables_in_db(char *database)
|
||||
*--end = 0;
|
||||
*--views_end = 0;
|
||||
if (tot_length)
|
||||
handle_request_for_tables(tables + 1, tot_length - 1, FALSE);
|
||||
handle_request_for_tables(tables + 1, tot_length - 1, FALSE, opt_all_in_1);
|
||||
if (tot_views_length)
|
||||
handle_request_for_tables(views + 1, tot_views_length - 1, TRUE);
|
||||
handle_request_for_tables(views + 1, tot_views_length - 1, TRUE, opt_all_in_1);
|
||||
my_free(tables);
|
||||
my_free(views);
|
||||
}
|
||||
@@ -739,7 +735,7 @@ static int process_all_tables_in_db(char *database)
|
||||
!strcmp(row[0], "slow_log")))
|
||||
continue; /* Skip logging tables */
|
||||
|
||||
handle_request_for_tables(row[0], fixed_name_length(row[0]), view);
|
||||
handle_request_for_tables(row[0], fixed_name_length(row[0]), view, opt_all_in_1);
|
||||
}
|
||||
}
|
||||
mysql_free_result(res);
|
||||
@@ -769,7 +765,9 @@ static int fix_table_storage_name(const char *name)
|
||||
|
||||
if (strncmp(name, "#mysql50#", 9))
|
||||
DBUG_RETURN(1);
|
||||
sprintf(qbuf, "RENAME TABLE `%s` TO `%s`", name, name + 9);
|
||||
my_snprintf(qbuf, sizeof(qbuf), "RENAME TABLE %`s TO %`s",
|
||||
name, name + 9);
|
||||
|
||||
rc= run_query(qbuf, 1);
|
||||
if (verbose)
|
||||
printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
|
||||
@@ -784,7 +782,8 @@ static int fix_database_storage_name(const char *name)
|
||||
|
||||
if (strncmp(name, "#mysql50#", 9))
|
||||
DBUG_RETURN(1);
|
||||
sprintf(qbuf, "ALTER DATABASE `%s` UPGRADE DATA DIRECTORY NAME", name);
|
||||
my_snprintf(qbuf, sizeof(qbuf), "ALTER DATABASE %`s UPGRADE DATA DIRECTORY "
|
||||
"NAME", name);
|
||||
rc= run_query(qbuf, 1);
|
||||
if (verbose)
|
||||
printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
|
||||
@@ -797,16 +796,14 @@ static int rebuild_table(char *name)
|
||||
int rc= 0;
|
||||
DBUG_ENTER("rebuild_table");
|
||||
|
||||
query= (char*)my_malloc(sizeof(char) * (12 + fixed_name_length(name) + 6 + 1),
|
||||
query= (char*)my_malloc(sizeof(char) * (12 + strlen(name) + 6 + 1),
|
||||
MYF(MY_WME));
|
||||
if (!query)
|
||||
DBUG_RETURN(1);
|
||||
ptr= strmov(query, "ALTER TABLE ");
|
||||
ptr= fix_table_name(ptr, name);
|
||||
ptr= strxmov(ptr, " FORCE", NullS);
|
||||
ptr= strxmov(query, "ALTER TABLE ", name, " FORCE", NullS);
|
||||
if (verbose >= 3)
|
||||
puts(query);
|
||||
if (mysql_real_query(sock, query, (uint)(ptr - query)))
|
||||
if (mysql_real_query(sock, query, (ulong)(ptr - query)))
|
||||
{
|
||||
fprintf(stderr, "Failed to %s\n", query);
|
||||
fprintf(stderr, "Error: %s\n", mysql_error(sock));
|
||||
@@ -867,11 +864,12 @@ static int disable_binlog()
|
||||
return run_query("SET SQL_LOG_BIN=0", 0);
|
||||
}
|
||||
|
||||
static int handle_request_for_tables(char *tables, size_t length, my_bool view)
|
||||
static int handle_request_for_tables(char *tables, size_t length,
|
||||
my_bool view, my_bool dont_quote)
|
||||
{
|
||||
char *query, *end, options[100], message[100];
|
||||
char table_name_buff[NAME_CHAR_LEN*2*2+1], *table_name;
|
||||
uint query_length= 0;
|
||||
size_t query_length= 0, query_size= sizeof(char)*(length+110);
|
||||
const char *op = 0;
|
||||
const char *tab_view;
|
||||
DBUG_ENTER("handle_request_for_tables");
|
||||
@@ -924,10 +922,12 @@ static int handle_request_for_tables(char *tables, size_t length, my_bool view)
|
||||
DBUG_RETURN(fix_table_storage_name(tables));
|
||||
}
|
||||
|
||||
if (!(query =(char *) my_malloc((sizeof(char)*(length+110)), MYF(MY_WME))))
|
||||
if (!(query =(char *) my_malloc(query_size, MYF(MY_WME))))
|
||||
DBUG_RETURN(1);
|
||||
if (opt_all_in_1)
|
||||
if (dont_quote)
|
||||
{
|
||||
DBUG_ASSERT(strlen(op)+strlen(tables)+strlen(options)+8+1 <= query_size);
|
||||
|
||||
/* No backticks here as we added them before */
|
||||
query_length= sprintf(query, "%s%s%s %s", op,
|
||||
tab_view, tables, options);
|
||||
@@ -943,7 +943,7 @@ static int handle_request_for_tables(char *tables, size_t length, my_bool view)
|
||||
(int) (ptr - org)));
|
||||
table_name= table_name_buff;
|
||||
ptr= strxmov(ptr, " ", options, NullS);
|
||||
query_length= (uint) (ptr - query);
|
||||
query_length= (size_t) (ptr - query);
|
||||
}
|
||||
if (verbose >= 3)
|
||||
puts(query);
|
||||
@@ -969,6 +969,13 @@ static int handle_request_for_tables(char *tables, size_t length, my_bool view)
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
static void insert_table_name(DYNAMIC_ARRAY *arr, char *in, size_t dblen)
|
||||
{
|
||||
char buf[NAME_LEN*2+2];
|
||||
in[dblen]= 0;
|
||||
my_snprintf(buf, sizeof(buf), "%`s.%`s", in, in + dblen + 1);
|
||||
insert_dynamic(arr, (uchar*) buf);
|
||||
}
|
||||
|
||||
static void print_result()
|
||||
{
|
||||
@@ -976,16 +983,13 @@ static void print_result()
|
||||
MYSQL_ROW row;
|
||||
char prev[(NAME_LEN+9)*3+2];
|
||||
char prev_alter[MAX_ALTER_STR_SIZE];
|
||||
char *db_name;
|
||||
uint length_of_db;
|
||||
size_t length_of_db= strlen(sock->db);
|
||||
uint i;
|
||||
my_bool found_error=0, table_rebuild=0;
|
||||
DYNAMIC_ARRAY *array4repair= &tables4repair;
|
||||
DBUG_ENTER("print_result");
|
||||
|
||||
res = mysql_use_result(sock);
|
||||
db_name= sock->db;
|
||||
length_of_db= strlen(db_name);
|
||||
|
||||
prev[0] = '\0';
|
||||
prev_alter[0]= 0;
|
||||
@@ -1009,16 +1013,10 @@ static void print_result()
|
||||
if (prev_alter[0])
|
||||
insert_dynamic(&alter_table_cmds, (uchar*) prev_alter);
|
||||
else
|
||||
{
|
||||
char *table_name= prev + (length_of_db+1);
|
||||
insert_dynamic(&tables4rebuild, (uchar*) table_name);
|
||||
}
|
||||
insert_table_name(&tables4rebuild, prev, length_of_db);
|
||||
}
|
||||
else
|
||||
{
|
||||
char *table_name= prev + (length_of_db+1);
|
||||
insert_dynamic(array4repair, table_name);
|
||||
}
|
||||
insert_table_name(array4repair, prev, length_of_db);
|
||||
}
|
||||
array4repair= &tables4repair;
|
||||
found_error=0;
|
||||
@@ -1063,16 +1061,10 @@ static void print_result()
|
||||
if (prev_alter[0])
|
||||
insert_dynamic(&alter_table_cmds, prev_alter);
|
||||
else
|
||||
{
|
||||
char *table_name= prev + (length_of_db+1);
|
||||
insert_dynamic(&tables4rebuild, table_name);
|
||||
}
|
||||
insert_table_name(&tables4rebuild, prev, length_of_db);
|
||||
}
|
||||
else
|
||||
{
|
||||
char *table_name= prev + (length_of_db+1);
|
||||
insert_dynamic(array4repair, table_name);
|
||||
}
|
||||
insert_table_name(array4repair, prev, length_of_db);
|
||||
}
|
||||
mysql_free_result(res);
|
||||
DBUG_VOID_RETURN;
|
||||
@@ -1209,7 +1201,7 @@ int main(int argc, char **argv)
|
||||
process_databases(argv);
|
||||
if (opt_auto_repair)
|
||||
{
|
||||
uint i;
|
||||
size_t i;
|
||||
|
||||
if (!opt_silent && (tables4repair.elements || tables4rebuild.elements))
|
||||
puts("\nRepairing tables");
|
||||
@@ -1217,7 +1209,7 @@ int main(int argc, char **argv)
|
||||
for (i = 0; i < tables4repair.elements ; i++)
|
||||
{
|
||||
char *name= (char*) dynamic_array_ptr(&tables4repair, i);
|
||||
handle_request_for_tables(name, fixed_name_length(name), FALSE);
|
||||
handle_request_for_tables(name, fixed_name_length(name), FALSE, TRUE);
|
||||
}
|
||||
for (i = 0; i < tables4rebuild.elements ; i++)
|
||||
rebuild_table((char*) dynamic_array_ptr(&tables4rebuild, i));
|
||||
@@ -1228,7 +1220,7 @@ int main(int argc, char **argv)
|
||||
for (i = 0; i < views4repair.elements ; i++)
|
||||
{
|
||||
char *name= (char*) dynamic_array_ptr(&views4repair, i);
|
||||
handle_request_for_tables(name, fixed_name_length(name), TRUE);
|
||||
handle_request_for_tables(name, fixed_name_length(name), TRUE, TRUE);
|
||||
}
|
||||
}
|
||||
ret= MY_TEST(first_error);
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
|
||||
static void add_load_option(DYNAMIC_STRING *str, const char *option,
|
||||
const char *option_value);
|
||||
static ulong find_set(TYPELIB *lib, const char *x, uint length,
|
||||
static ulong find_set(TYPELIB *lib, const char *x, size_t length,
|
||||
char **err_pos, uint *err_len);
|
||||
static char *alloc_query_str(ulong size);
|
||||
|
||||
@@ -896,7 +896,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
opt_set_charset= 0;
|
||||
opt_compatible_mode_str= argument;
|
||||
opt_compatible_mode= find_set(&compatible_mode_typelib,
|
||||
argument, (uint) strlen(argument),
|
||||
argument, strlen(argument),
|
||||
&err_ptr, &err_len);
|
||||
if (err_len)
|
||||
{
|
||||
@@ -906,7 +906,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
}
|
||||
#if !defined(DBUG_OFF)
|
||||
{
|
||||
uint size_for_sql_mode= 0;
|
||||
size_t size_for_sql_mode= 0;
|
||||
const char **ptr;
|
||||
for (ptr= compatible_mode_names; *ptr; ptr++)
|
||||
size_for_sql_mode+= strlen(*ptr);
|
||||
@@ -1177,8 +1177,8 @@ static int fetch_db_collation(const char *db_name,
|
||||
break;
|
||||
}
|
||||
|
||||
strncpy(db_cl_name, db_cl_row[0], db_cl_size);
|
||||
db_cl_name[db_cl_size - 1]= 0; /* just in case. */
|
||||
strncpy(db_cl_name, db_cl_row[0], db_cl_size-1);
|
||||
db_cl_name[db_cl_size - 1]= 0;
|
||||
|
||||
} while (FALSE);
|
||||
|
||||
@@ -1311,7 +1311,7 @@ get_gtid_pos(char *out_gtid_pos, int master)
|
||||
|
||||
|
||||
static char *my_case_str(const char *str,
|
||||
uint str_len,
|
||||
size_t str_len,
|
||||
const char *token,
|
||||
uint token_len)
|
||||
{
|
||||
@@ -1527,7 +1527,7 @@ static int switch_character_set_results(MYSQL *mysql, const char *cs_name)
|
||||
*/
|
||||
|
||||
static char *cover_definer_clause(const char *stmt_str,
|
||||
uint stmt_length,
|
||||
size_t stmt_length,
|
||||
const char *definer_version_str,
|
||||
uint definer_version_length,
|
||||
const char *stmt_version_str,
|
||||
@@ -1727,14 +1727,14 @@ static void dbDisconnect(char *host)
|
||||
} /* dbDisconnect */
|
||||
|
||||
|
||||
static void unescape(FILE *file,char *pos,uint length)
|
||||
static void unescape(FILE *file,char *pos, size_t length)
|
||||
{
|
||||
char *tmp;
|
||||
DBUG_ENTER("unescape");
|
||||
if (!(tmp=(char*) my_malloc(length*2+1, MYF(MY_WME))))
|
||||
die(EX_MYSQLERR, "Couldn't allocate memory");
|
||||
|
||||
mysql_real_escape_string(&mysql_connection, tmp, pos, length);
|
||||
mysql_real_escape_string(&mysql_connection, tmp, pos, (ulong)length);
|
||||
fputc('\'', file);
|
||||
fputs(tmp, file);
|
||||
fputc('\'', file);
|
||||
@@ -1868,7 +1868,7 @@ static char *quote_for_equal(const char *name, char *buff)
|
||||
Quote '<' '>' '&' '\"' chars and print a string to the xml_file.
|
||||
*/
|
||||
|
||||
static void print_quoted_xml(FILE *xml_file, const char *str, ulong len,
|
||||
static void print_quoted_xml(FILE *xml_file, const char *str, size_t len,
|
||||
my_bool is_attribute_name)
|
||||
{
|
||||
const char *end;
|
||||
@@ -2129,7 +2129,7 @@ static void print_xml_row(FILE *xml_file, const char *row_name,
|
||||
squeezed to a single hyphen.
|
||||
*/
|
||||
|
||||
static void print_xml_comment(FILE *xml_file, ulong len,
|
||||
static void print_xml_comment(FILE *xml_file, size_t len,
|
||||
const char *comment_string)
|
||||
{
|
||||
const char* end;
|
||||
@@ -2246,7 +2246,7 @@ static uint dump_events_for_db(char *db)
|
||||
DBUG_ENTER("dump_events_for_db");
|
||||
DBUG_PRINT("enter", ("db: '%s'", db));
|
||||
|
||||
mysql_real_escape_string(mysql, db_name_buff, db, strlen(db));
|
||||
mysql_real_escape_string(mysql, db_name_buff, db, (ulong)strlen(db));
|
||||
|
||||
/* nice comments */
|
||||
print_comment(sql_file, 0,
|
||||
@@ -2366,7 +2366,6 @@ static uint dump_events_for_db(char *db)
|
||||
(const char *) delimiter);
|
||||
|
||||
my_free(query_str);
|
||||
|
||||
restore_time_zone(sql_file, delimiter);
|
||||
restore_sql_mode(sql_file, delimiter);
|
||||
|
||||
@@ -2459,7 +2458,7 @@ static uint dump_routines_for_db(char *db)
|
||||
DBUG_ENTER("dump_routines_for_db");
|
||||
DBUG_PRINT("enter", ("db: '%s'", db));
|
||||
|
||||
mysql_real_escape_string(mysql, db_name_buff, db, strlen(db));
|
||||
mysql_real_escape_string(mysql, db_name_buff, db, (ulong)strlen(db));
|
||||
|
||||
/* nice comments */
|
||||
print_comment(sql_file, 0,
|
||||
@@ -2517,9 +2516,9 @@ static uint dump_routines_for_db(char *db)
|
||||
if the user has EXECUTE privilege he see routine names, but NOT the
|
||||
routine body of other routines that are not the creator of!
|
||||
*/
|
||||
DBUG_PRINT("info",("length of body for %s row[2] '%s' is %d",
|
||||
DBUG_PRINT("info",("length of body for %s row[2] '%s' is %zu",
|
||||
routine_name, row[2] ? row[2] : "(null)",
|
||||
row[2] ? (int) strlen(row[2]) : 0));
|
||||
row[2] ? strlen(row[2]) : 0));
|
||||
if (row[2] == NULL)
|
||||
{
|
||||
print_comment(sql_file, 1, "\n-- insufficient privileges to %s\n",
|
||||
@@ -4107,7 +4106,7 @@ static int dump_tablespaces_for_tables(char *db, char **table_names, int tables)
|
||||
int i;
|
||||
char name_buff[NAME_LEN*2+3];
|
||||
|
||||
mysql_real_escape_string(mysql, name_buff, db, strlen(db));
|
||||
mysql_real_escape_string(mysql, name_buff, db, (ulong)strlen(db));
|
||||
|
||||
init_dynamic_string_checked(&dynamic_where, " AND TABLESPACE_NAME IN ("
|
||||
"SELECT DISTINCT TABLESPACE_NAME FROM"
|
||||
@@ -4120,7 +4119,7 @@ static int dump_tablespaces_for_tables(char *db, char **table_names, int tables)
|
||||
for (i=0 ; i<tables ; i++)
|
||||
{
|
||||
mysql_real_escape_string(mysql, name_buff,
|
||||
table_names[i], strlen(table_names[i]));
|
||||
table_names[i], (ulong)strlen(table_names[i]));
|
||||
|
||||
dynstr_append_checked(&dynamic_where, "'");
|
||||
dynstr_append_checked(&dynamic_where, name_buff);
|
||||
@@ -4150,7 +4149,7 @@ static int dump_tablespaces_for_databases(char** databases)
|
||||
{
|
||||
char db_name_buff[NAME_LEN*2+3];
|
||||
mysql_real_escape_string(mysql, db_name_buff,
|
||||
databases[i], strlen(databases[i]));
|
||||
databases[i], (ulong)strlen(databases[i]));
|
||||
dynstr_append_checked(&dynamic_where, "'");
|
||||
dynstr_append_checked(&dynamic_where, db_name_buff);
|
||||
dynstr_append_checked(&dynamic_where, "',");
|
||||
@@ -5418,7 +5417,7 @@ static int start_transaction(MYSQL *mysql_con)
|
||||
}
|
||||
|
||||
|
||||
static ulong find_set(TYPELIB *lib, const char *x, uint length,
|
||||
static ulong find_set(TYPELIB *lib, const char *x, size_t length,
|
||||
char **err_pos, uint *err_len)
|
||||
{
|
||||
const char *end= x + length;
|
||||
@@ -5476,7 +5475,7 @@ static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row,
|
||||
fputc(' ',file);
|
||||
fputs(prefix, file);
|
||||
if (string_value)
|
||||
unescape(file,row[0],(uint) strlen(row[0]));
|
||||
unescape(file,row[0], strlen(row[0]));
|
||||
else
|
||||
fputs(row[0], file);
|
||||
check_io(file);
|
||||
@@ -5732,8 +5731,8 @@ static my_bool get_view_structure(char *table, char* db)
|
||||
verbose_msg("-- Retrieving view structure for table %s...\n", table);
|
||||
|
||||
#ifdef NOT_REALLY_USED_YET
|
||||
sprintf(insert_pat, "SET SQL_QUOTE_SHOW_CREATE=%d",
|
||||
(opt_quoted || opt_keywords));
|
||||
dynstr_append_checked(&insert_pat, "SET SQL_QUOTE_SHOW_CREATE=");
|
||||
dynstr_append_checked(&insert_pat, (opt_quoted || opt_keywords)? "1":"0");
|
||||
#endif
|
||||
|
||||
result_table= quote_name(table, table_buff, 1);
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
|
||||
/* Global Thread counter */
|
||||
uint counter= 0;
|
||||
pthread_mutex_t init_mutex;
|
||||
pthread_mutex_t counter_mutex;
|
||||
pthread_cond_t count_threshhold;
|
||||
|
||||
@@ -421,8 +422,19 @@ static MYSQL *db_connect(char *host, char *database,
|
||||
MYSQL *mysql;
|
||||
if (verbose)
|
||||
fprintf(stdout, "Connecting to %s\n", host ? host : "localhost");
|
||||
if (!(mysql= mysql_init(NULL)))
|
||||
return 0;
|
||||
if (opt_use_threads && !lock_tables)
|
||||
{
|
||||
pthread_mutex_lock(&init_mutex);
|
||||
if (!(mysql= mysql_init(NULL)))
|
||||
{
|
||||
pthread_mutex_unlock(&init_mutex);
|
||||
return 0;
|
||||
}
|
||||
pthread_mutex_unlock(&init_mutex);
|
||||
}
|
||||
else
|
||||
if (!(mysql= mysql_init(NULL)))
|
||||
return 0;
|
||||
if (opt_compress)
|
||||
mysql_options(mysql,MYSQL_OPT_COMPRESS,NullS);
|
||||
if (opt_local_file)
|
||||
@@ -614,7 +626,7 @@ error:
|
||||
pthread_cond_signal(&count_threshhold);
|
||||
pthread_mutex_unlock(&counter_mutex);
|
||||
mysql_thread_end();
|
||||
|
||||
pthread_exit(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -638,15 +650,31 @@ int main(int argc, char **argv)
|
||||
|
||||
if (opt_use_threads && !lock_tables)
|
||||
{
|
||||
pthread_t mainthread; /* Thread descriptor */
|
||||
pthread_attr_t attr; /* Thread attributes */
|
||||
char **save_argv;
|
||||
uint worker_thread_count= 0, table_count= 0, i= 0;
|
||||
pthread_t *worker_threads; /* Thread descriptor */
|
||||
pthread_attr_t attr; /* Thread attributes */
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr,
|
||||
PTHREAD_CREATE_DETACHED);
|
||||
PTHREAD_CREATE_JOINABLE);
|
||||
|
||||
pthread_mutex_init(&init_mutex, NULL);
|
||||
pthread_mutex_init(&counter_mutex, NULL);
|
||||
pthread_cond_init(&count_threshhold, NULL);
|
||||
|
||||
/* Count the number of tables. This number denotes the total number
|
||||
of threads spawn.
|
||||
*/
|
||||
save_argv= argv;
|
||||
for (table_count= 0; *argv != NULL; argv++)
|
||||
table_count++;
|
||||
argv= save_argv;
|
||||
|
||||
if (!(worker_threads= (pthread_t*) my_malloc(table_count *
|
||||
sizeof(*worker_threads),
|
||||
MYF(0))))
|
||||
return -2;
|
||||
|
||||
for (counter= 0; *argv != NULL; argv++) /* Loop through tables */
|
||||
{
|
||||
pthread_mutex_lock(&counter_mutex);
|
||||
@@ -661,15 +689,16 @@ int main(int argc, char **argv)
|
||||
counter++;
|
||||
pthread_mutex_unlock(&counter_mutex);
|
||||
/* now create the thread */
|
||||
if (pthread_create(&mainthread, &attr, worker_thread,
|
||||
(void *)*argv) != 0)
|
||||
if (pthread_create(&worker_threads[worker_thread_count], &attr,
|
||||
worker_thread, (void *)*argv) != 0)
|
||||
{
|
||||
pthread_mutex_lock(&counter_mutex);
|
||||
counter--;
|
||||
pthread_mutex_unlock(&counter_mutex);
|
||||
fprintf(stderr,"%s: Could not create thread\n",
|
||||
my_progname);
|
||||
fprintf(stderr,"%s: Could not create thread\n", my_progname);
|
||||
continue;
|
||||
}
|
||||
worker_thread_count++;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -684,9 +713,18 @@ int main(int argc, char **argv)
|
||||
pthread_cond_timedwait(&count_threshhold, &counter_mutex, &abstime);
|
||||
}
|
||||
pthread_mutex_unlock(&counter_mutex);
|
||||
pthread_mutex_destroy(&init_mutex);
|
||||
pthread_mutex_destroy(&counter_mutex);
|
||||
pthread_cond_destroy(&count_threshhold);
|
||||
pthread_attr_destroy(&attr);
|
||||
|
||||
for(i= 0; i < worker_thread_count; i++)
|
||||
{
|
||||
if (pthread_join(worker_threads[i], NULL))
|
||||
fprintf(stderr,"%s: Could not join worker thread.\n", my_progname);
|
||||
}
|
||||
|
||||
my_free(worker_threads);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -51,9 +51,9 @@ static int list_tables(MYSQL *mysql,const char *db,const char *table);
|
||||
static int list_table_status(MYSQL *mysql,const char *db,const char *table);
|
||||
static int list_fields(MYSQL *mysql,const char *db,const char *table,
|
||||
const char *field);
|
||||
static void print_header(const char *header,uint head_length,...);
|
||||
static void print_row(const char *header,uint head_length,...);
|
||||
static void print_trailer(uint length,...);
|
||||
static void print_header(const char *header,size_t head_length,...);
|
||||
static void print_row(const char *header,size_t head_length,...);
|
||||
static void print_trailer(size_t length,...);
|
||||
static void print_res_header(MYSQL_RES *result);
|
||||
static void print_res_top(MYSQL_RES *result);
|
||||
static void print_res_row(MYSQL_RES *result,MYSQL_ROW cur);
|
||||
@@ -379,7 +379,8 @@ static int
|
||||
list_dbs(MYSQL *mysql,const char *wild)
|
||||
{
|
||||
const char *header;
|
||||
uint length, counter = 0;
|
||||
size_t length = 0;
|
||||
uint counter = 0;
|
||||
ulong rowcount = 0L;
|
||||
char tables[NAME_LEN+1], rows[NAME_LEN+1];
|
||||
char query[NAME_LEN + 100];
|
||||
@@ -417,7 +418,7 @@ list_dbs(MYSQL *mysql,const char *wild)
|
||||
printf("Wildcard: %s\n",wild);
|
||||
|
||||
header="Databases";
|
||||
length=(uint) strlen(header);
|
||||
length= strlen(header);
|
||||
field=mysql_fetch_field(result);
|
||||
if (length < field->max_length)
|
||||
length=field->max_length;
|
||||
@@ -505,7 +506,8 @@ static int
|
||||
list_tables(MYSQL *mysql,const char *db,const char *table)
|
||||
{
|
||||
const char *header;
|
||||
uint head_length, counter = 0;
|
||||
size_t head_length;
|
||||
uint counter = 0;
|
||||
char query[NAME_LEN + 100], rows[NAME_LEN], fields[16];
|
||||
MYSQL_FIELD *field;
|
||||
MYSQL_RES *result;
|
||||
@@ -542,7 +544,7 @@ list_tables(MYSQL *mysql,const char *db,const char *table)
|
||||
putchar('\n');
|
||||
|
||||
header="Tables";
|
||||
head_length=(uint) strlen(header);
|
||||
head_length= strlen(header);
|
||||
field=mysql_fetch_field(result);
|
||||
if (head_length < field->max_length)
|
||||
head_length=field->max_length;
|
||||
@@ -660,7 +662,7 @@ list_table_status(MYSQL *mysql,const char *db,const char *wild)
|
||||
len= sizeof(query);
|
||||
len-= my_snprintf(query, len, "show table status from `%s`", db);
|
||||
if (wild && wild[0] && len)
|
||||
strxnmov(query + strlen(query), len, " like '", wild, "'", NullS);
|
||||
strxnmov(query + strlen(query), len - 1, " like '", wild, "'", NullS);
|
||||
if (mysql_query(mysql,query) || !(result=mysql_store_result(mysql)))
|
||||
{
|
||||
fprintf(stderr,"%s: Cannot get status for db: %s, table: %s: %s\n",
|
||||
@@ -693,7 +695,7 @@ list_fields(MYSQL *mysql,const char *db,const char *table,
|
||||
const char *wild)
|
||||
{
|
||||
char query[NAME_LEN + 100];
|
||||
int len;
|
||||
size_t len;
|
||||
MYSQL_RES *result;
|
||||
MYSQL_ROW row;
|
||||
ulong UNINIT_VAR(rows);
|
||||
@@ -723,7 +725,7 @@ list_fields(MYSQL *mysql,const char *db,const char *table,
|
||||
len-= my_snprintf(query, len, "show /*!32332 FULL */ columns from `%s`",
|
||||
table);
|
||||
if (wild && wild[0] && len)
|
||||
strxnmov(query + strlen(query), len, " like '", wild, "'", NullS);
|
||||
strxnmov(query + strlen(query), len - 1, " like '", wild, "'", NullS);
|
||||
if (mysql_query(mysql,query) || !(result=mysql_store_result(mysql)))
|
||||
{
|
||||
fprintf(stderr,"%s: Cannot list columns in db: %s, table: %s: %s\n",
|
||||
@@ -771,10 +773,10 @@ list_fields(MYSQL *mysql,const char *db,const char *table,
|
||||
*****************************************************************************/
|
||||
|
||||
static void
|
||||
print_header(const char *header,uint head_length,...)
|
||||
print_header(const char *header,size_t head_length,...)
|
||||
{
|
||||
va_list args;
|
||||
uint length,i,str_length,pre_space;
|
||||
size_t length,i,str_length,pre_space;
|
||||
const char *field;
|
||||
|
||||
va_start(args,head_length);
|
||||
@@ -797,10 +799,10 @@ print_header(const char *header,uint head_length,...)
|
||||
putchar('|');
|
||||
for (;;)
|
||||
{
|
||||
str_length=(uint) strlen(field);
|
||||
str_length= strlen(field);
|
||||
if (str_length > length)
|
||||
str_length=length+1;
|
||||
pre_space=(uint) (((int) length-(int) str_length)/2)+1;
|
||||
pre_space= ((length- str_length)/2)+1;
|
||||
for (i=0 ; i < pre_space ; i++)
|
||||
putchar(' ');
|
||||
for (i = 0 ; i < str_length ; i++)
|
||||
@@ -834,11 +836,11 @@ print_header(const char *header,uint head_length,...)
|
||||
|
||||
|
||||
static void
|
||||
print_row(const char *header,uint head_length,...)
|
||||
print_row(const char *header,size_t head_length,...)
|
||||
{
|
||||
va_list args;
|
||||
const char *field;
|
||||
uint i,length,field_length;
|
||||
size_t i,length,field_length;
|
||||
|
||||
va_start(args,head_length);
|
||||
field=header; length=head_length;
|
||||
@@ -847,7 +849,7 @@ print_row(const char *header,uint head_length,...)
|
||||
putchar('|');
|
||||
putchar(' ');
|
||||
fputs(field,stdout);
|
||||
field_length=(uint) strlen(field);
|
||||
field_length= strlen(field);
|
||||
for (i=field_length ; i <= length ; i++)
|
||||
putchar(' ');
|
||||
if (!(field=va_arg(args,char *)))
|
||||
@@ -861,10 +863,10 @@ print_row(const char *header,uint head_length,...)
|
||||
|
||||
|
||||
static void
|
||||
print_trailer(uint head_length,...)
|
||||
print_trailer(size_t head_length,...)
|
||||
{
|
||||
va_list args;
|
||||
uint length,i;
|
||||
size_t length,i;
|
||||
|
||||
va_start(args,head_length);
|
||||
length=head_length;
|
||||
@@ -907,7 +909,7 @@ static void print_res_top(MYSQL_RES *result)
|
||||
mysql_field_seek(result,0);
|
||||
while((field = mysql_fetch_field(result)))
|
||||
{
|
||||
if ((length=(uint) strlen(field->name)) > field->max_length)
|
||||
if ((length= strlen(field->name)) > field->max_length)
|
||||
field->max_length=length;
|
||||
else
|
||||
length=field->max_length;
|
||||
|
||||
@@ -121,7 +121,7 @@ static my_bool tty_password= 0;
|
||||
static my_bool opt_mark_progress= 0;
|
||||
static my_bool ps_protocol= 0, ps_protocol_enabled= 0;
|
||||
static my_bool sp_protocol= 0, sp_protocol_enabled= 0;
|
||||
static my_bool view_protocol= 0, view_protocol_enabled= 0, wait_longer= 0;
|
||||
static my_bool view_protocol= 0, view_protocol_enabled= 0;
|
||||
static my_bool cursor_protocol= 0, cursor_protocol_enabled= 0;
|
||||
static my_bool parsing_disabled= 0;
|
||||
static my_bool display_result_vertically= FALSE, display_result_lower= FALSE,
|
||||
@@ -181,6 +181,7 @@ static uint my_end_arg= 0;
|
||||
static uint opt_tail_lines= 0;
|
||||
|
||||
static uint opt_connect_timeout= 0;
|
||||
static uint opt_wait_for_pos_timeout= 0;
|
||||
|
||||
static char delimiter[MAX_DELIMITER_LENGTH]= ";";
|
||||
static uint delimiter_length= 1;
|
||||
@@ -4657,7 +4658,7 @@ void do_sync_with_master2(struct st_command *command, long offset,
|
||||
MYSQL_ROW row;
|
||||
MYSQL *mysql= cur_con->mysql;
|
||||
char query_buf[FN_REFLEN+128];
|
||||
int timeout= wait_longer ? 1500 : 300; /* seconds */
|
||||
int timeout= opt_wait_for_pos_timeout;
|
||||
|
||||
if (!master_pos.file[0])
|
||||
die("Calling 'sync_with_master' without calling 'save_master_pos'");
|
||||
@@ -5012,7 +5013,7 @@ static int my_kill(int pid, int sig)
|
||||
|
||||
void do_shutdown_server(struct st_command *command)
|
||||
{
|
||||
long timeout= wait_longer ? 60*5 : 60;
|
||||
long timeout= opt_wait_for_pos_timeout ? opt_wait_for_pos_timeout / 5 : 300;
|
||||
int pid;
|
||||
DYNAMIC_STRING ds_pidfile_name;
|
||||
MYSQL* mysql = cur_con->mysql;
|
||||
@@ -6953,9 +6954,10 @@ static struct my_option my_long_options[] =
|
||||
"Number of seconds before connection timeout.",
|
||||
&opt_connect_timeout, &opt_connect_timeout, 0, GET_UINT, REQUIRED_ARG,
|
||||
120, 0, 3600 * 12, 0, 0, 0},
|
||||
{"wait-longer-for-timeouts", 0,
|
||||
"Wait longer for timeouts. Useful when running under valgrind",
|
||||
&wait_longer, &wait_longer, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"wait_for_pos_timeout", 0,
|
||||
"Number of seconds to wait for master_pos_wait",
|
||||
&opt_wait_for_pos_timeout, &opt_wait_for_pos_timeout, 0, GET_UINT,
|
||||
REQUIRED_ARG, 300, 0, 3600 * 12, 0, 0, 0},
|
||||
{"plugin_dir", 0, "Directory for client-side plugins.",
|
||||
&opt_plugin_dir, &opt_plugin_dir, 0,
|
||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
|
||||
@@ -15,7 +15,7 @@ SET(fail_patterns
|
||||
)
|
||||
|
||||
MACRO (MY_CHECK_C_COMPILER_FLAG flag)
|
||||
STRING(REGEX REPLACE "[-,= ]" "_" result "HAVE_C_${flag}")
|
||||
STRING(REGEX REPLACE "[-,= +]" "_" result "HAVE_C_${flag}")
|
||||
SET(SAVE_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
|
||||
SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${flag}")
|
||||
CHECK_C_SOURCE_COMPILES("int main(void) { return 0; }" ${result}
|
||||
@@ -24,7 +24,7 @@ MACRO (MY_CHECK_C_COMPILER_FLAG flag)
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (MY_CHECK_CXX_COMPILER_FLAG flag)
|
||||
STRING(REGEX REPLACE "[-,= ]" "_" result "HAVE_CXX_${flag}")
|
||||
STRING(REGEX REPLACE "[-,= +]" "_" result "HAVE_CXX_${flag}")
|
||||
SET(SAVE_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
|
||||
SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${flag}")
|
||||
CHECK_CXX_SOURCE_COMPILES("int main(void) { return 0; }" ${result}
|
||||
@@ -40,7 +40,7 @@ FUNCTION(MY_CHECK_AND_SET_COMPILER_FLAG flag)
|
||||
ENDIF()
|
||||
MY_CHECK_C_COMPILER_FLAG(${flag})
|
||||
MY_CHECK_CXX_COMPILER_FLAG(${flag})
|
||||
STRING(REGEX REPLACE "[-,= ]" "_" result "${flag}")
|
||||
STRING(REGEX REPLACE "[-,= +]" "_" result "${flag}")
|
||||
FOREACH(lang C CXX)
|
||||
IF (HAVE_${lang}_${result})
|
||||
IF(ARGN)
|
||||
|
||||
@@ -214,7 +214,8 @@ MACRO(MYSQL_ADD_PLUGIN)
|
||||
ELSE()
|
||||
SET(ver "")
|
||||
ENDIF()
|
||||
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} ${ARG_COMPONENT} PARENT_SCOPE)
|
||||
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} ${ARG_COMPONENT})
|
||||
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} PARENT_SCOPE)
|
||||
|
||||
IF (NOT ARG_CLIENT)
|
||||
SET(CPACK_RPM_${ARG_COMPONENT}_PACKAGE_REQUIRES "MariaDB${ver}" PARENT_SCOPE)
|
||||
|
||||
@@ -55,9 +55,10 @@ MACRO(CHECK_SYSTEMD)
|
||||
IF(HAVE_SYSTEMD AND HAVE_SYSTEMD_SD_DAEMON_H AND HAVE_SYSTEMD_SD_LISTEN_FDS
|
||||
AND HAVE_SYSTEMD_SD_NOTIFY AND HAVE_SYSTEMD_SD_NOTIFYF)
|
||||
ADD_DEFINITIONS(-DHAVE_SYSTEMD)
|
||||
SET(SYSTEMD_SCRIPTS mariadb-service-convert galera_new_cluster)
|
||||
SET(SYSTEMD_SCRIPTS mariadb-service-convert galera_new_cluster galera_recovery)
|
||||
SET(SYSTEMD_DEB_FILES "usr/bin/mariadb-service-convert
|
||||
usr/bin/galera_new_cluster
|
||||
usr/bin/galera_recovery
|
||||
${INSTALL_SYSTEMD_UNITDIR}/mariadb.service
|
||||
${INSTALL_SYSTEMD_UNITDIR}/mariadb@.service
|
||||
${INSTALL_SYSTEMD_UNITDIR}/mariadb@bootstrap.service.d/use_galera_new_cluster.conf")
|
||||
|
||||
@@ -26,7 +26,7 @@ ENDIF()
|
||||
OPTION(WITH_WSREP "WSREP replication API (to use, e.g. Galera Replication library)" ${with_wsrep_default})
|
||||
|
||||
# Set the patch version
|
||||
SET(WSREP_PATCH_VERSION "13")
|
||||
SET(WSREP_PATCH_VERSION "16")
|
||||
|
||||
# Obtain wsrep API version
|
||||
FILE(STRINGS "${MySQL_SOURCE_DIR}/wsrep/wsrep_api.h" WSREP_API_VERSION
|
||||
|
||||
@@ -1107,7 +1107,7 @@ CHECK_STRUCT_HAS_MEMBER("struct timespec" tv_sec "time.h" STRUCT_TIMESPEC_HAS_TV
|
||||
CHECK_STRUCT_HAS_MEMBER("struct timespec" tv_nsec "time.h" STRUCT_TIMESPEC_HAS_TV_NSEC)
|
||||
|
||||
IF(NOT MSVC)
|
||||
CHECK_C_SOURCE_RUNS(
|
||||
CHECK_C_SOURCE_COMPILES(
|
||||
"
|
||||
#define _GNU_SOURCE
|
||||
#include <fcntl.h>
|
||||
|
||||
4
debian/control
vendored
4
debian/control
vendored
@@ -404,10 +404,10 @@ Description: MariaDB database regression test suite (metapackage for the latest
|
||||
|
||||
Package: mariadb-connect-engine-10.1
|
||||
Architecture: any
|
||||
Depends: libxml2, mariadb-server-10.1, unixODBC
|
||||
Depends: libxml2, mariadb-server-10.1, unixodbc
|
||||
Build-Depends: libxml2-dev,
|
||||
mariadb-server-10.1,
|
||||
unixODBC-dev,
|
||||
unixodbc-dev,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Description: Connect storage engine for MariaDB
|
||||
|
||||
@@ -50,10 +50,11 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
switch(optid) {
|
||||
case 'V':
|
||||
printf("%s version %s by Jani Tolonen\n", progname, VER);
|
||||
exit(-1);
|
||||
exit(0);
|
||||
case 'I':
|
||||
case '?':
|
||||
usage();
|
||||
exit(0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -69,7 +70,10 @@ int main(int argc, char *argv[])
|
||||
exit(-1);
|
||||
if (!argv[0] || !argv[1] || (pid= atoi(argv[0])) <= 0 ||
|
||||
(t= atoi(argv[1])) <= 0)
|
||||
{
|
||||
usage();
|
||||
exit(-1);
|
||||
}
|
||||
for (; t > 0; t--)
|
||||
{
|
||||
if (kill((pid_t) pid, sig))
|
||||
@@ -100,5 +104,4 @@ void usage(void)
|
||||
printf("integer arguments.\n\n");
|
||||
printf("Options:\n");
|
||||
my_print_help(my_long_options);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
@@ -222,7 +222,7 @@ static my_bool print_win_error_msg(DWORD error, my_bool verbose)
|
||||
will ignore calls to register already registered error numbers.
|
||||
*/
|
||||
|
||||
static const char **get_handler_error_messages()
|
||||
static const char **get_handler_error_messages(void)
|
||||
{
|
||||
return handler_error_messages;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Use is subject to license terms
|
||||
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -131,6 +131,7 @@ typedef struct my_uca_level_info_st
|
||||
uchar *lengths;
|
||||
uint16 **weights;
|
||||
MY_CONTRACTIONS contractions;
|
||||
uint levelno;
|
||||
} MY_UCA_WEIGHT_LEVEL;
|
||||
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ C_MODE_START
|
||||
#if defined(HAVE_STACKTRACE) || defined(HAVE_BACKTRACE)
|
||||
void my_init_stacktrace();
|
||||
void my_print_stacktrace(uchar* stack_bottom, ulong thread_stack);
|
||||
void my_safe_print_str(const char* val, int max_len);
|
||||
int my_safe_print_str(const char* val, int max_len);
|
||||
void my_write_core(int sig);
|
||||
#if BACKTRACE_DEMANGLE
|
||||
char *my_demangle(const char *mangled_name, int *status);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
/* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -331,7 +331,8 @@ typedef struct st_sort_info
|
||||
my_off_t filelength, dupp, buff_length;
|
||||
ha_rows max_records;
|
||||
uint current_key, total_keys;
|
||||
uint got_error, threads_running;
|
||||
volatile uint got_error;
|
||||
uint threads_running;
|
||||
myf myf_rw;
|
||||
enum data_file_type new_data_file_type;
|
||||
} MI_SORT_INFO;
|
||||
|
||||
@@ -27,7 +27,7 @@ typedef struct st_net {
|
||||
char save_char;
|
||||
char net_skip_rest_factor;
|
||||
my_bool thread_specific_malloc;
|
||||
my_bool compress;
|
||||
unsigned char compress;
|
||||
my_bool unused3;
|
||||
void *thd;
|
||||
unsigned int last_errno;
|
||||
|
||||
@@ -377,7 +377,7 @@ typedef struct st_net {
|
||||
char save_char;
|
||||
char net_skip_rest_factor;
|
||||
my_bool thread_specific_malloc;
|
||||
my_bool compress;
|
||||
unsigned char compress;
|
||||
my_bool unused3; /* Please remove with the next incompatible ABI change. */
|
||||
/*
|
||||
Pointer to query object in query cache, do not equal NULL (0) for
|
||||
|
||||
@@ -122,8 +122,12 @@ ADD_DEPENDENCIES(sql_embedded GenError GenServerSource)
|
||||
# On Unix, it is libmysqld.a
|
||||
IF(WIN32)
|
||||
SET(MYSQLSERVER_OUTPUT_NAME mysqlserver)
|
||||
SET(COMPONENT_MYSQLSERVER "Embedded")
|
||||
SET(COMPONENT_LIBMYSQLD "Embedded")
|
||||
ELSE()
|
||||
SET(MYSQLSERVER_OUTPUT_NAME mysqld)
|
||||
SET(COMPONENT_MYSQLSERVER "Development")
|
||||
SET(COMPONENT_LIBMYSQLD "Server")
|
||||
ENDIF()
|
||||
|
||||
|
||||
@@ -148,9 +152,9 @@ FOREACH(LIB ${LIBS})
|
||||
ENDFOREACH()
|
||||
|
||||
MERGE_LIBRARIES(mysqlserver STATIC ${EMBEDDED_LIBS}
|
||||
OUTPUT_NAME ${MYSQLSERVER_OUTPUT_NAME} COMPONENT Development)
|
||||
OUTPUT_NAME ${MYSQLSERVER_OUTPUT_NAME} COMPONENT ${COMPONENT_MYSQLSERVER})
|
||||
|
||||
INSTALL(FILES embedded_priv.h DESTINATION ${INSTALL_INCLUDEDIR}/private COMPONENT Development)
|
||||
INSTALL(FILES embedded_priv.h DESTINATION ${INSTALL_INCLUDEDIR}/private COMPONENT ${COMPONENT_MYSQLSERVER})
|
||||
|
||||
# Visual Studio users need debug static library
|
||||
IF(MSVC)
|
||||
@@ -177,7 +181,7 @@ ENDFOREACH()
|
||||
|
||||
IF(NOT DISABLE_SHARED)
|
||||
MERGE_LIBRARIES(libmysqld SHARED mysqlserver EXPORTS ${EMBEDDED_API}
|
||||
COMPONENT Server)
|
||||
COMPONENT ${COMPONENT_LIBMYSQLD})
|
||||
IF(UNIX)
|
||||
# Name the shared library, handle versioning (provides same api as client
|
||||
# library hence the same version)
|
||||
|
||||
@@ -333,6 +333,12 @@ static int emb_stmt_execute(MYSQL_STMT *stmt)
|
||||
THD *thd;
|
||||
my_bool res;
|
||||
|
||||
if (stmt->param_count && !stmt->bind_param_done)
|
||||
{
|
||||
set_stmt_error(stmt, CR_PARAMS_NOT_BOUND, unknown_sqlstate, NULL);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
int4store(header, stmt->stmt_id);
|
||||
header[4]= (uchar) stmt->flags;
|
||||
thd= (THD*)stmt->mysql->thd;
|
||||
|
||||
@@ -155,7 +155,7 @@ connection master;
|
||||
f6 ENUM('a', 'b', 'c') default 'a',
|
||||
f7 DECIMAL(17,9) default '1000.00',
|
||||
f8 MEDIUMBLOB,
|
||||
f9 NUMERIC(6,4) default '2000.00',
|
||||
f9 NUMERIC(6,2) default '2000.00',
|
||||
f10 VARCHAR(1024),
|
||||
f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
|
||||
f12 SET('a', 'b', 'c') default 'b')
|
||||
@@ -178,7 +178,7 @@ connection master;
|
||||
f5 DOUBLE DEFAULT '2.00',
|
||||
f6 DECIMAL(17,9) default '1000.00',
|
||||
f7 MEDIUMBLOB,
|
||||
f8 NUMERIC(6,4) default '2000.00',
|
||||
f8 NUMERIC(6,2) default '2000.00',
|
||||
f9 VARCHAR(1024),
|
||||
f10 BINARY(20) not null default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
|
||||
f11 CHAR(255))
|
||||
|
||||
@@ -22,6 +22,13 @@ SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 2)) FROM t1;
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 3)) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 AS SELECT SPACE(10) AS a LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES (_ucs2 0x3400);
|
||||
INSERT INTO t1 VALUES (_ucs2 0xF001);
|
||||
SELECT HEX(CONVERT(a USING ucs2)) AS ucs2, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 AS SELECT SPACE(10) AS a LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES ('A'),('À'),('Á'),('Â'),('Ã'),('Ä'),('Å');
|
||||
|
||||
@@ -45,6 +45,8 @@ loose-feedback-debug-startup-interval=20
|
||||
loose-feedback-debug-first-interval=60
|
||||
loose-feedback-debug-interval=60
|
||||
|
||||
loose-pam-debug
|
||||
|
||||
loose-innodb_data_file_path= ibdata1:12M:autoextend
|
||||
loose-innodb_buffer_pool_size= 8M
|
||||
loose-innodb_lru_scan_depth= 100
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# show server variables
|
||||
#
|
||||
|
||||
--disable_query_log
|
||||
--echo ===== ENGINES =====
|
||||
show engines;
|
||||
--echo ===== VARIABLES =====
|
||||
show variables;
|
||||
--echo ===== STOP =====
|
||||
--enable_query_log
|
||||
exit;
|
||||
@@ -14,7 +14,7 @@ while ($mysql_errno)
|
||||
# Strangely enough, the server might return "Too many connections"
|
||||
# while being shutdown, thus 1040 is an "allowed" error
|
||||
# See BUG#36228
|
||||
--error 0,1040,1053,2002,2003,2005,2006,2013
|
||||
--error 0,1040,1053,2002,2003,2005,2006,2013,1927
|
||||
show status;
|
||||
|
||||
dec $counter;
|
||||
|
||||
@@ -12,7 +12,7 @@ while (!$mysql_errno)
|
||||
# Strangely enough, the server might return "Too many connections"
|
||||
# while being shutdown, thus 1040 is an "allowed" error.
|
||||
# See BUG#36228.
|
||||
--error 0,1040,1053,2002,2003,2005,2006,2013
|
||||
--error 0,1040,1053,2002,2003,2005,2006,2013,1927
|
||||
show status;
|
||||
|
||||
dec $counter;
|
||||
|
||||
@@ -338,7 +338,7 @@ sub dump_core {
|
||||
my ($self)= @_;
|
||||
return if IS_WINDOWS;
|
||||
my $pid= $self->{SAFE_PID};
|
||||
die "Can't cet core from not started process" unless defined $pid;
|
||||
die "Can't get core from not started process" unless defined $pid;
|
||||
_verbose("Sending ABRT to $self");
|
||||
kill ("ABRT", $pid);
|
||||
return 1;
|
||||
|
||||
@@ -311,6 +311,7 @@ sub combinations_from_file($$)
|
||||
}
|
||||
|
||||
our %disabled;
|
||||
our %disabled_wildcards;
|
||||
sub parse_disabled {
|
||||
my ($filename, $suitename) = @_;
|
||||
|
||||
@@ -319,10 +320,18 @@ sub parse_disabled {
|
||||
chomp;
|
||||
next if /^\s*#/ or /^\s*$/;
|
||||
mtr_error("Syntax error in $filename line $.")
|
||||
unless /^\s*(?:([-0-9A-Za-z_\/]+)\.)?([-0-9A-Za-z_#]+)\s*:\s*(.*?)\s*$/;
|
||||
mtr_error("Wrong suite name in $filename line $.")
|
||||
unless /^\s*(?:([-0-9A-Za-z_\/]+)\.)?([-0-9A-Za-z_#\*]+)\s*:\s*(.*?)\s*$/;
|
||||
mtr_error("Wrong suite name in $filename line $.: suitename = $suitename but the file says $1")
|
||||
if defined $1 and defined $suitename and $1 ne $suitename;
|
||||
$disabled{($1 || $suitename || '') . ".$2"} = $3;
|
||||
my ($sname, $casename, $text)= (($1 || $suitename || ''), $2, $3);
|
||||
|
||||
if ($casename =~ /\*/) {
|
||||
# Wildcard
|
||||
$disabled_wildcards{$sname . ".$casename"}= $text;
|
||||
}
|
||||
else {
|
||||
$disabled{$sname . ".$casename"}= $text;
|
||||
}
|
||||
}
|
||||
close DISABLED;
|
||||
}
|
||||
@@ -720,6 +729,14 @@ sub collect_one_test_case {
|
||||
# Check for disabled tests
|
||||
# ----------------------------------------------------------------------
|
||||
my $disable = $disabled{".$tname"} || $disabled{$name};
|
||||
if (not $disable) {
|
||||
foreach my $w (keys %disabled_wildcards) {
|
||||
if ($name =~ /^$w/) {
|
||||
$disable= $disabled_wildcards{$w};
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (not defined $disable and $suite->{parent}) {
|
||||
$disable = $disabled{$suite->{parent}->{name} . ".$tname"};
|
||||
}
|
||||
|
||||
@@ -284,7 +284,6 @@ my $opt_port_base= $ENV{'MTR_PORT_BASE'} || "auto";
|
||||
my $build_thread= 0;
|
||||
|
||||
my $opt_record;
|
||||
my $opt_report_features;
|
||||
|
||||
our $opt_resfile= $ENV{'MTR_RESULT_FILE'} || 0;
|
||||
|
||||
@@ -317,7 +316,6 @@ our $opt_user = "root";
|
||||
our $opt_valgrind= 0;
|
||||
my $opt_valgrind_mysqld= 0;
|
||||
my $opt_valgrind_mysqltest= 0;
|
||||
my @default_valgrind_args= ("--show-reachable=yes");
|
||||
my @valgrind_args;
|
||||
my $opt_strace= 0;
|
||||
my $opt_strace_client;
|
||||
@@ -352,6 +350,7 @@ my $source_dist= -d "../sql";
|
||||
my $opt_max_save_core= env_or_val(MTR_MAX_SAVE_CORE => 5);
|
||||
my $opt_max_save_datadir= env_or_val(MTR_MAX_SAVE_DATADIR => 20);
|
||||
my $opt_max_test_fail= env_or_val(MTR_MAX_TEST_FAIL => 10);
|
||||
my $opt_core_on_failure= 0;
|
||||
|
||||
my $opt_parallel= $ENV{MTR_PARALLEL} || 1;
|
||||
my $opt_port_group_size = $ENV{MTR_PORT_GROUP_SIZE} || 20;
|
||||
@@ -429,21 +428,6 @@ sub main {
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ( $opt_report_features ) {
|
||||
# Put "report features" as the first test to run
|
||||
my $tinfo = My::Test->new
|
||||
(
|
||||
name => 'report_features',
|
||||
# No result_file => Prints result
|
||||
path => 'include/report-features.test',
|
||||
template_path => "include/default_my.cnf",
|
||||
master_opt => [],
|
||||
slave_opt => [],
|
||||
suite => 'main',
|
||||
);
|
||||
unshift(@$tests, $tinfo);
|
||||
}
|
||||
|
||||
#######################################################################
|
||||
my $num_tests= @$tests;
|
||||
if ( $opt_parallel eq "auto" ) {
|
||||
@@ -1157,6 +1141,7 @@ sub command_line_setup {
|
||||
'max-save-core=i' => \$opt_max_save_core,
|
||||
'max-save-datadir=i' => \$opt_max_save_datadir,
|
||||
'max-test-fail=i' => \$opt_max_test_fail,
|
||||
'core-on-failure' => \$opt_core_on_failure,
|
||||
|
||||
# Coverage, profiling etc
|
||||
'gcov' => \$opt_gcov,
|
||||
@@ -1190,7 +1175,6 @@ sub command_line_setup {
|
||||
'client-libdir=s' => \$path_client_libdir,
|
||||
|
||||
# Misc
|
||||
'report-features' => \$opt_report_features,
|
||||
'comment=s' => \$opt_comment,
|
||||
'fast' => \$opt_fast,
|
||||
'force-restart' => \$opt_force_restart,
|
||||
@@ -1722,17 +1706,27 @@ sub command_line_setup {
|
||||
# Set special valgrind options unless options passed on command line
|
||||
push(@valgrind_args, "--trace-children=yes")
|
||||
unless @valgrind_args;
|
||||
unshift(@valgrind_args, "--tool=callgrind");
|
||||
}
|
||||
|
||||
# default to --tool=memcheck
|
||||
if ($opt_valgrind && ! grep(/^--tool=/i, @valgrind_args))
|
||||
{
|
||||
# Set valgrind_option unless already defined
|
||||
push(@valgrind_args, ("--show-reachable=yes", "--leak-check=yes",
|
||||
"--num-callers=16"))
|
||||
unless @valgrind_args;
|
||||
unshift(@valgrind_args, "--tool=memcheck");
|
||||
}
|
||||
|
||||
if ( $opt_valgrind )
|
||||
{
|
||||
# Set valgrind_options to default unless already defined
|
||||
push(@valgrind_args, @default_valgrind_args)
|
||||
unless @valgrind_args;
|
||||
|
||||
# Make valgrind run in quiet mode so it only print errors
|
||||
push(@valgrind_args, "--quiet" );
|
||||
|
||||
push(@valgrind_args, "--suppressions=${glob_mysql_test_dir}/valgrind.supp")
|
||||
if -f "$glob_mysql_test_dir/valgrind.supp";
|
||||
|
||||
mtr_report("Running valgrind with options \"",
|
||||
join(" ", @valgrind_args), "\"");
|
||||
}
|
||||
@@ -1783,9 +1777,12 @@ sub set_build_thread_ports($) {
|
||||
if ( lc($opt_build_thread) eq 'auto' ) {
|
||||
my $found_free = 0;
|
||||
$build_thread = 300; # Start attempts from here
|
||||
my $build_thread_upper = $build_thread + ($opt_parallel > 1500
|
||||
? 3000
|
||||
: 2 * $opt_parallel) + 300;
|
||||
while (! $found_free)
|
||||
{
|
||||
$build_thread= mtr_get_unique_id($build_thread, 349);
|
||||
$build_thread= mtr_get_unique_id($build_thread, $build_thread_upper);
|
||||
if ( !defined $build_thread ) {
|
||||
mtr_error("Could not get a unique build thread id");
|
||||
}
|
||||
@@ -3761,6 +3758,7 @@ sub run_testcase ($$) {
|
||||
my $print_freq=20;
|
||||
|
||||
mtr_verbose("Running test:", $tinfo->{name});
|
||||
$ENV{'MTR_TEST_NAME'} = $tinfo->{name};
|
||||
resfile_report_test($tinfo) if $opt_resfile;
|
||||
|
||||
# Allow only alpanumerics pluss _ - + . in combination names,
|
||||
@@ -4148,7 +4146,7 @@ sub run_testcase ($$) {
|
||||
}
|
||||
|
||||
# Try to dump core for mysqltest and all servers
|
||||
foreach my $proc ($test, started(all_servers()))
|
||||
foreach my $proc ($test, started(all_servers()))
|
||||
{
|
||||
mtr_print("Trying to dump core for $proc");
|
||||
if ($proc->dump_core())
|
||||
@@ -4833,7 +4831,9 @@ sub after_failure ($) {
|
||||
sub report_failure_and_restart ($) {
|
||||
my $tinfo= shift;
|
||||
|
||||
if ($opt_valgrind_mysqld && ($tinfo->{'warnings'} || $tinfo->{'timeout'})) {
|
||||
if ($opt_valgrind_mysqld && ($tinfo->{'warnings'} || $tinfo->{'timeout'}) &&
|
||||
$opt_core_on_failure == 0)
|
||||
{
|
||||
# In these cases we may want valgrind report from normal termination
|
||||
$tinfo->{'dont_kill_server'}= 1;
|
||||
}
|
||||
@@ -5481,6 +5481,13 @@ sub start_mysqltest ($) {
|
||||
mtr_add_arg($args, "--sleep=%d", $opt_sleep);
|
||||
}
|
||||
|
||||
if ( $opt_valgrind )
|
||||
{
|
||||
# We are running server under valgrind, which causes some replication
|
||||
# test to be much slower, notable rpl_mdev6020. Increase timeout.
|
||||
mtr_add_arg($args, "--wait-for-pos-timeout=1500");
|
||||
}
|
||||
|
||||
if ( $opt_ssl )
|
||||
{
|
||||
# Turn on SSL for _all_ test cases if option --ssl was used
|
||||
@@ -5491,12 +5498,6 @@ sub start_mysqltest ($) {
|
||||
mtr_add_arg($args, "--max-connections=%d", $opt_max_connections);
|
||||
}
|
||||
|
||||
if ( $opt_valgrind )
|
||||
{
|
||||
# Longer timeouts when running with valgrind
|
||||
mtr_add_arg($args, "--wait-longer-for-timeouts");
|
||||
}
|
||||
|
||||
if ( $opt_embedded_server )
|
||||
{
|
||||
|
||||
@@ -5816,29 +5817,15 @@ sub valgrind_arguments {
|
||||
my $args= shift;
|
||||
my $exe= shift;
|
||||
|
||||
if ( $opt_callgrind)
|
||||
# Ensure the jemalloc works with mysqld
|
||||
if ($$exe =~ /mysqld/)
|
||||
{
|
||||
mtr_add_arg($args, "--tool=callgrind");
|
||||
mtr_add_arg($args, "--base=$opt_vardir/log");
|
||||
}
|
||||
else
|
||||
{
|
||||
mtr_add_arg($args, "--tool=memcheck"); # From >= 2.1.2 needs this option
|
||||
mtr_add_arg($args, "--leak-check=yes");
|
||||
mtr_add_arg($args, "--num-callers=16");
|
||||
mtr_add_arg($args, "--suppressions=%s/valgrind.supp", $glob_mysql_test_dir)
|
||||
if -f "$glob_mysql_test_dir/valgrind.supp";
|
||||
|
||||
# Ensure the jemalloc works with mysqld
|
||||
if ($$exe =~ /mysqld/)
|
||||
{
|
||||
my %somalloc=(
|
||||
'system jemalloc' => 'libjemalloc*',
|
||||
'bundled jemalloc' => 'NONE'
|
||||
);
|
||||
my ($syn) = $somalloc{$mysqld_variables{'version-malloc-library'}};
|
||||
mtr_add_arg($args, '--soname-synonyms=somalloc=%s', $syn) if $syn;
|
||||
}
|
||||
my %somalloc=(
|
||||
'system jemalloc' => 'libjemalloc*',
|
||||
'bundled jemalloc' => 'NONE'
|
||||
);
|
||||
my ($syn) = $somalloc{$mysqld_variables{'version-malloc-library'}};
|
||||
mtr_add_arg($args, '--soname-synonyms=somalloc=%s', $syn) if $syn;
|
||||
}
|
||||
|
||||
# Add valgrind options, can be overriden by user
|
||||
@@ -6130,6 +6117,7 @@ Options for debugging the product
|
||||
the current test run. Defaults to
|
||||
$opt_max_test_fail, set to 0 for no limit. Set
|
||||
it's default with MTR_MAX_TEST_FAIL
|
||||
core-in-failure Generate a core even if run server is run with valgrind
|
||||
|
||||
Options for valgrind
|
||||
|
||||
@@ -6213,7 +6201,6 @@ Misc options
|
||||
gprof Collect profiling information using gprof.
|
||||
experimental=<file> Refer to list of tests considered experimental;
|
||||
failures will be marked exp-fail instead of fail.
|
||||
report-features First run a "test" that reports mysql features
|
||||
timestamp Print timestamp before each test report line
|
||||
timediff With --timestamp, also print time passed since
|
||||
*previous* test started
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
SHOW CONTRIBUTORS;
|
||||
Name Location Comment
|
||||
Booking.com http://www.booking.com Founding member of the MariaDB Foundation
|
||||
MariaDB Corporation https://mariadb.com Founding member of the MariaDB Foundation
|
||||
Auttomattic http://automattic.com Member of the MariaDB Foundation
|
||||
Visma http://visma.com Member of the MariaDB Foundation
|
||||
Nexedi http://www.nexedi.com Member of the MariaDB Foundation
|
||||
Acronis http://www.acronis.com Member of the MariaDB Foundation
|
||||
Verkkokauppa.com Finland Sponsor of the MariaDB Foundation
|
||||
Webyog Bangalore Sponsor of the MariaDB Foundation
|
||||
Booking.com http://www.booking.com Founding member, Platinum Sponsor of the MariaDB Foundation
|
||||
MariaDB Corporation https://mariadb.com Founding member, Gold Sponsor of the MariaDB Foundation
|
||||
Visma http://visma.com Gold Sponsor of the MariaDB Foundation
|
||||
DBS http://dbs.com Gold Sponsor of the MariaDB Foundation
|
||||
Nexedi https://www.nexedi.com Silver Sponsor of the MariaDB Foundation
|
||||
Acronis http://www.acronis.com Silver Sponsor of the MariaDB Foundation
|
||||
Auttomattic https://automattic.com Bronze Sponsor of the MariaDB Foundation
|
||||
Verkkokauppa.com https://virtuozzo.com Bronze Sponsor of the MariaDB Foundation
|
||||
Virtuozzo https://virtuozzo.com/ Bronze Sponsor of the MariaDB Foundation
|
||||
Google USA Sponsoring encryption, parallel replication and GTID
|
||||
Facebook USA Sponsoring non-blocking API, LIMIT ROWS EXAMINED etc
|
||||
Ronald Bradford Brisbane, Australia EFF contribution for UC2006 Auction
|
||||
|
||||
@@ -939,6 +939,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 7
|
||||
|
||||
@@ -262,11 +262,11 @@ create table mysqltest2.t2 like test.t1;
|
||||
lock table test.t1 write, mysqltest2.t2 write;
|
||||
select * from information_schema.metadata_lock_info;
|
||||
THREAD_ID LOCK_MODE LOCK_DURATION LOCK_TYPE TABLE_SCHEMA TABLE_NAME
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Global read lock
|
||||
# MDL_SHARED_NO_READ_WRITE MDL_EXPLICIT Table metadata lock test t1
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Schema metadata lock mysqltest2
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Schema metadata lock test
|
||||
# MDL_SHARED_NO_READ_WRITE MDL_EXPLICIT Table metadata lock mysqltest2 t2
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Global read lock
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Schema metadata lock mysqltest2
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Schema metadata lock test
|
||||
# MDL_SHARED_NO_READ_WRITE NULL Table metadata lock mysqltest2 t2
|
||||
# MDL_SHARED_NO_READ_WRITE NULL Table metadata lock test t1
|
||||
create or replace table test.t1;
|
||||
ERROR 42000: A table must have at least 1 column
|
||||
show tables;
|
||||
@@ -274,10 +274,10 @@ Tables_in_test
|
||||
t2
|
||||
select * from information_schema.metadata_lock_info;
|
||||
THREAD_ID LOCK_MODE LOCK_DURATION LOCK_TYPE TABLE_SCHEMA TABLE_NAME
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Global read lock
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Schema metadata lock mysqltest2
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Schema metadata lock test
|
||||
# MDL_SHARED_NO_READ_WRITE MDL_EXPLICIT Table metadata lock mysqltest2 t2
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Global read lock
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Schema metadata lock mysqltest2
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Schema metadata lock test
|
||||
# MDL_SHARED_NO_READ_WRITE NULL Table metadata lock mysqltest2 t2
|
||||
create or replace table mysqltest2.t2;
|
||||
ERROR 42000: A table must have at least 1 column
|
||||
select * from information_schema.metadata_lock_info;
|
||||
@@ -289,11 +289,11 @@ create table mysqltest2.t2 like test.t1;
|
||||
lock table test.t1 write, mysqltest2.t2 write;
|
||||
select * from information_schema.metadata_lock_info;
|
||||
THREAD_ID LOCK_MODE LOCK_DURATION LOCK_TYPE TABLE_SCHEMA TABLE_NAME
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Global read lock
|
||||
# MDL_SHARED_NO_READ_WRITE MDL_EXPLICIT Table metadata lock test t1
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Schema metadata lock mysqltest2
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Schema metadata lock test
|
||||
# MDL_SHARED_NO_READ_WRITE MDL_EXPLICIT Table metadata lock mysqltest2 t2
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Global read lock
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Schema metadata lock mysqltest2
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Schema metadata lock test
|
||||
# MDL_SHARED_NO_READ_WRITE NULL Table metadata lock mysqltest2 t2
|
||||
# MDL_SHARED_NO_READ_WRITE NULL Table metadata lock test t1
|
||||
create or replace table test.t1 (a int) select 1 as 'a', 2 as 'a';
|
||||
ERROR 42S21: Duplicate column name 'a'
|
||||
show tables;
|
||||
@@ -301,10 +301,10 @@ Tables_in_test
|
||||
t2
|
||||
select * from information_schema.metadata_lock_info;
|
||||
THREAD_ID LOCK_MODE LOCK_DURATION LOCK_TYPE TABLE_SCHEMA TABLE_NAME
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Global read lock
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Schema metadata lock mysqltest2
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Schema metadata lock test
|
||||
# MDL_SHARED_NO_READ_WRITE MDL_EXPLICIT Table metadata lock mysqltest2 t2
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Global read lock
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Schema metadata lock mysqltest2
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Schema metadata lock test
|
||||
# MDL_SHARED_NO_READ_WRITE NULL Table metadata lock mysqltest2 t2
|
||||
create or replace table mysqltest2.t2 (a int) select 1 as 'a', 2 as 'a';
|
||||
ERROR 42S21: Duplicate column name 'a'
|
||||
select * from information_schema.metadata_lock_info;
|
||||
@@ -398,31 +398,31 @@ create table t1 (a int);
|
||||
lock table t1 write, t2 read;
|
||||
select * from information_schema.metadata_lock_info;
|
||||
THREAD_ID LOCK_MODE LOCK_DURATION LOCK_TYPE TABLE_SCHEMA TABLE_NAME
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Global read lock
|
||||
# MDL_SHARED_NO_READ_WRITE MDL_EXPLICIT Table metadata lock test t1
|
||||
# MDL_SHARED_READ MDL_EXPLICIT Table metadata lock test t2
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Schema metadata lock test
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Global read lock
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Schema metadata lock test
|
||||
# MDL_SHARED_NO_READ_WRITE NULL Table metadata lock test t1
|
||||
# MDL_SHARED_READ NULL Table metadata lock test t2
|
||||
create or replace table t1 (i int);
|
||||
select * from information_schema.metadata_lock_info;
|
||||
THREAD_ID LOCK_MODE LOCK_DURATION LOCK_TYPE TABLE_SCHEMA TABLE_NAME
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Global read lock
|
||||
# MDL_SHARED_NO_READ_WRITE MDL_EXPLICIT Table metadata lock test t1
|
||||
# MDL_SHARED_READ MDL_EXPLICIT Table metadata lock test t2
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Schema metadata lock test
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Global read lock
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Schema metadata lock test
|
||||
# MDL_SHARED_NO_READ_WRITE NULL Table metadata lock test t1
|
||||
# MDL_SHARED_READ NULL Table metadata lock test t2
|
||||
create or replace table t1 like t2;
|
||||
select * from information_schema.metadata_lock_info;
|
||||
THREAD_ID LOCK_MODE LOCK_DURATION LOCK_TYPE TABLE_SCHEMA TABLE_NAME
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Global read lock
|
||||
# MDL_SHARED_NO_READ_WRITE MDL_EXPLICIT Table metadata lock test t1
|
||||
# MDL_SHARED_READ MDL_EXPLICIT Table metadata lock test t2
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Schema metadata lock test
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Global read lock
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Schema metadata lock test
|
||||
# MDL_SHARED_NO_READ_WRITE NULL Table metadata lock test t1
|
||||
# MDL_SHARED_READ NULL Table metadata lock test t2
|
||||
create or replace table t1 select 1 as f1;
|
||||
select * from information_schema.metadata_lock_info;
|
||||
THREAD_ID LOCK_MODE LOCK_DURATION LOCK_TYPE TABLE_SCHEMA TABLE_NAME
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Global read lock
|
||||
# MDL_SHARED_NO_READ_WRITE MDL_EXPLICIT Table metadata lock test t1
|
||||
# MDL_SHARED_READ MDL_EXPLICIT Table metadata lock test t2
|
||||
# MDL_INTENTION_EXCLUSIVE MDL_EXPLICIT Schema metadata lock test
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Global read lock
|
||||
# MDL_INTENTION_EXCLUSIVE NULL Schema metadata lock test
|
||||
# MDL_SHARED_NO_READ_WRITE NULL Table metadata lock test t1
|
||||
# MDL_SHARED_READ NULL Table metadata lock test t2
|
||||
drop table t1;
|
||||
unlock tables;
|
||||
#
|
||||
|
||||
@@ -460,6 +460,7 @@ utf8mb4_test_400_ci utf8mb4 328 8
|
||||
latin1_test2 latin1 332 1
|
||||
utf8_bengali_standard_ci utf8 336 8
|
||||
utf8_bengali_traditional_ci utf8 337 8
|
||||
utf8_implicit_weights_ci utf8 338 8
|
||||
utf8_phone_ci utf8 352 8
|
||||
utf8_test_ci utf8 353 8
|
||||
utf8_5624_1 utf8 354 8
|
||||
@@ -1156,3 +1157,25 @@ Warning 1273 Expansion too long: 'a\u002Daaaaaa10'
|
||||
#
|
||||
# Search for occurrences of [ERROR] Syntax error at '[strength tertiary]'
|
||||
Occurances : 2
|
||||
#
|
||||
# MDEV-8686 A user defined collation utf8_confusables doesn't work
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_implicit_weights_ci);
|
||||
INSERT INTO t1 VALUES ('a'),('b'),('c');
|
||||
INSERT INTO t1 VALUES (_ucs2 0x1500),(_ucs2 0x1501);
|
||||
INSERT INTO t1 VALUES (_ucs2 0x3400),(_ucs2 0x3560),(_ucs2 0x3561),(_ucs2 0x3600);
|
||||
INSERT INTO t1 VALUES (_ucs2 0x3700),(_ucs2 0x3701);
|
||||
SELECT HEX(CONVERT(a USING ucs2)) AS ch, HEX(WEIGHT_STRING(a)) AS w, HEX(WEIGHT_STRING(a COLLATE utf8_unicode_ci)) AS ducet FROM t1 ORDER BY a,ch;
|
||||
ch w ducet
|
||||
0061 0E33 0E33
|
||||
3561 0E33 FB80B561
|
||||
0063 0E60 0E60
|
||||
1500 0E60 1BAD
|
||||
0062 FB80B400 0E4A
|
||||
3400 FB80B400 FB80B400
|
||||
3560 FB80B560 FB80B560
|
||||
1501 FB80B600 1BAE
|
||||
3600 FB80B600 FB80B600
|
||||
3700 FB80B700 FB80B700
|
||||
3701 FB80B700 FB80B701
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -277,9 +277,40 @@ CREATE TABLE t1 ( a VARCHAR(1) );
|
||||
INSERT INTO t1 VALUES ('m'),('n');
|
||||
CREATE VIEW v1 AS SELECT 'w' ;
|
||||
SELECT * FROM t1 WHERE a < ALL ( SELECT * FROM v1 );
|
||||
ERROR HY000: Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation '<='
|
||||
a
|
||||
m
|
||||
n
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
SET character_set_connection = default;
|
||||
SET optimizer_switch= default;
|
||||
#End of 5.3 tests
|
||||
#
|
||||
# Start of 5.5 tests
|
||||
#
|
||||
#
|
||||
# MDEV-10181 Illegal mix of collation for a field and an ASCII string as a view field
|
||||
#
|
||||
SET NAMES utf8;
|
||||
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
|
||||
INSERT INTO t1 VALUES ('A'),('a'),('B'),('b');
|
||||
CREATE VIEW v1 AS SELECT 'a';
|
||||
SELECT * FROM v1,t1 where t1.a=v1.a;
|
||||
a a
|
||||
a A
|
||||
a a
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
SET NAMES utf8;
|
||||
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
|
||||
INSERT INTO t1 VALUES ('a'),('b'),('c');
|
||||
CREATE VIEW v1 AS SELECT 'a' AS a UNION SELECT 'b';
|
||||
SELECT * FROM v1,t1 WHERE t1.a=v1.a;
|
||||
a a
|
||||
a a
|
||||
b b
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
|
||||
@@ -14033,6 +14033,19 @@ Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) CHARACTER SET utf8 COLLATE utf8_thai_520_w2 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (_ucs2 0x3400);
|
||||
INSERT INTO t1 VALUES (_ucs2 0xF001);
|
||||
SELECT HEX(CONVERT(a USING ucs2)) AS ucs2, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1;
|
||||
ucs2 HEX(a) HEX(WEIGHT_STRING(a))
|
||||
3400 E39080 FB80B4000020
|
||||
F001 EF8081 FBC1F0010020
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT SPACE(10) AS a LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) CHARACTER SET utf8 COLLATE utf8_thai_520_w2 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('A'),('À'),('Á'),('Â'),('Ã'),('Ä'),('Å');
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
@@ -14714,6 +14727,19 @@ Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_thai_520_w2 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (_ucs2 0x3400);
|
||||
INSERT INTO t1 VALUES (_ucs2 0xF001);
|
||||
SELECT HEX(CONVERT(a USING ucs2)) AS ucs2, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1;
|
||||
ucs2 HEX(a) HEX(WEIGHT_STRING(a))
|
||||
3400 3400 FB80B4000020
|
||||
F001 F001 FBC1F0010020
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT SPACE(10) AS a LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_thai_520_w2 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('A'),('À'),('Á'),('Â'),('Ã'),('Ä'),('Å');
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
|
||||
@@ -6663,6 +6663,19 @@ Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) CHARACTER SET utf16 COLLATE utf16_thai_520_w2 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (_ucs2 0x3400);
|
||||
INSERT INTO t1 VALUES (_ucs2 0xF001);
|
||||
SELECT HEX(CONVERT(a USING ucs2)) AS ucs2, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1;
|
||||
ucs2 HEX(a) HEX(WEIGHT_STRING(a))
|
||||
3400 3400 FB80B4000020
|
||||
F001 F001 FBC1F0010020
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT SPACE(10) AS a LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) CHARACTER SET utf16 COLLATE utf16_thai_520_w2 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('A'),('À'),('Á'),('Â'),('Ã'),('Ä'),('Å');
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
|
||||
@@ -6683,6 +6683,19 @@ Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) CHARACTER SET utf32 COLLATE utf32_thai_520_w2 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (_ucs2 0x3400);
|
||||
INSERT INTO t1 VALUES (_ucs2 0xF001);
|
||||
SELECT HEX(CONVERT(a USING ucs2)) AS ucs2, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1;
|
||||
ucs2 HEX(a) HEX(WEIGHT_STRING(a))
|
||||
3400 00003400 FB80B4000020
|
||||
F001 0000F001 FBC1F0010020
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT SPACE(10) AS a LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) CHARACTER SET utf32 COLLATE utf32_thai_520_w2 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('A'),('À'),('Á'),('Â'),('Ã'),('Ä'),('Å');
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
|
||||
@@ -6209,6 +6209,45 @@ OCTET_LENGTH(a) a
|
||||
255 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-8402 Bug#77473 Bug#21317406 TRUNCATED DATA WITH SUBQUERY & UTF8
|
||||
#
|
||||
#
|
||||
SET NAMES utf8;
|
||||
SELECT length(rpad(_utf8 0xD0B1, 65536, _utf8 0xD0B2)) AS data;
|
||||
data
|
||||
131072
|
||||
SELECT length(data) AS len FROM (
|
||||
SELECT rpad(_utf8 0xD0B1, 65536, _utf8 0xD0B2) AS data
|
||||
) AS sub;
|
||||
len
|
||||
131072
|
||||
SELECT length(rpad(_utf8 0xD0B1, 65535, _utf8 0xD0B2)) AS data;
|
||||
data
|
||||
131070
|
||||
SELECT length(data) AS len FROM (
|
||||
SELECT rpad(_utf8 0xD0B1, 65535, _utf8 0xD0B2) AS data
|
||||
) AS sub;
|
||||
len
|
||||
131070
|
||||
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 36766) AS data) AS sub;
|
||||
len
|
||||
73532
|
||||
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 36767) AS data) AS sub;
|
||||
len
|
||||
73534
|
||||
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 36778) AS data) AS sub;
|
||||
len
|
||||
73556
|
||||
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 65535) AS data) AS sub;
|
||||
len
|
||||
131070
|
||||
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 65536) AS data) AS sub;
|
||||
len
|
||||
131072
|
||||
SELECT length(data) AS len FROM (SELECT REPEAT('ä', 65537) AS data) AS sub;
|
||||
len
|
||||
131074
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
#
|
||||
|
||||
@@ -2825,6 +2825,40 @@ OCTET_LENGTH(a) a
|
||||
252 😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-8402 Bug#77473 Bug#21317406 TRUNCATED DATA WITH SUBQUERY & UTF8
|
||||
#
|
||||
#
|
||||
SET NAMES utf8mb4;
|
||||
SELECT length(repeat(_utf8mb4 0xE29883, 21844)) AS data;
|
||||
data
|
||||
65532
|
||||
SELECT length(data) AS len
|
||||
FROM ( SELECT repeat(_utf8mb4 0xE29883, 21844) AS data ) AS sub;
|
||||
len
|
||||
65532
|
||||
SELECT length(repeat(_utf8mb4 0xE29883, 21846)) AS data;
|
||||
data
|
||||
65538
|
||||
SELECT length(data) AS len
|
||||
FROM ( SELECT repeat(_utf8mb4 0xE29883, 21846) AS data ) AS sub;
|
||||
len
|
||||
65538
|
||||
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 21844) AS data ) AS sub;
|
||||
len
|
||||
65532
|
||||
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 21845) AS data ) AS sub;
|
||||
len
|
||||
65535
|
||||
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 21846) AS data ) AS sub;
|
||||
len
|
||||
65538
|
||||
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 65535) AS data ) AS sub;
|
||||
len
|
||||
196605
|
||||
SELECT LENGTH(data) AS len FROM (SELECT REPEAT('☃', 65536) AS data ) AS sub;
|
||||
len
|
||||
196608
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
#
|
||||
|
||||
@@ -5373,6 +5373,19 @@ Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_thai_520_w2 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (_ucs2 0x3400);
|
||||
INSERT INTO t1 VALUES (_ucs2 0xF001);
|
||||
SELECT HEX(CONVERT(a USING ucs2)) AS ucs2, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1;
|
||||
ucs2 HEX(a) HEX(WEIGHT_STRING(a))
|
||||
3400 E39080 FB80B4000020
|
||||
F001 EF8081 FBC1F0010020
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT SPACE(10) AS a LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_thai_520_w2 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('A'),('À'),('Á'),('Â'),('Ã'),('Ä'),('Å');
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
|
||||
@@ -621,13 +621,13 @@ SELECT f3 FROM t2 HAVING f3 >= 8
|
||||
);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY <derived2> system NULL NULL NULL NULL 1 100.00
|
||||
1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 4 sq.f2 1 100.00
|
||||
1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 4 const 1 100.00
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 Using where; FirstMatch(<subquery4>); Using join buffer (flat, BNL join)
|
||||
4 MATERIALIZED t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DERIVED t1 system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'sq.f2' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 select 6 AS `f1` from <materialize> (select `test`.`t2`.`f3` from `test`.`t2` having (`test`.`t2`.`f3` >= 8)) semi join (`test`.`t2`) where ((`test`.`t2`.`f3` = 6) and (9 = `<subquery4>`.`f3`))
|
||||
Note 1003 select 6 AS `f1` from <materialize> (select `test`.`t2`.`f3` from `test`.`t2` having (`test`.`t2`.`f3` >= 8)) semi join (`test`.`t2`) where ((`test`.`t2`.`f3` = 6) and (`<subquery4>`.`f3` = 9))
|
||||
DROP TABLE t2,t1;
|
||||
#
|
||||
# MDEV-9462: Out of memory using explain on 2 empty tables
|
||||
|
||||
@@ -79,6 +79,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -93,6 +94,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 12
|
||||
@@ -166,6 +168,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -180,6 +183,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 12
|
||||
@@ -232,6 +236,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -248,6 +253,7 @@ Handler_read_key 11
|
||||
Handler_read_last 0
|
||||
Handler_read_next 3
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 11
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 36
|
||||
@@ -323,6 +329,7 @@ Handler_read_key 22
|
||||
Handler_read_last 0
|
||||
Handler_read_next 22
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 60
|
||||
@@ -340,6 +347,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -356,6 +364,7 @@ Handler_read_key 11
|
||||
Handler_read_last 0
|
||||
Handler_read_next 3
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 11
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 36
|
||||
@@ -451,6 +460,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 2
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 8
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 39
|
||||
|
||||
@@ -470,6 +470,26 @@ DROP EVENT ev1;
|
||||
|
||||
SHOW EVENTS;
|
||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||
#
|
||||
# MDEV-9524 Cannot load from mysql.event when sql_mode is set to PAD_CHAR_TO_FULL_LENGTH
|
||||
#
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE EVENT ev1 ON SCHEDULE EVERY 5 SECOND DO DELETE FROM t1;
|
||||
SHOW EVENTS;
|
||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||
events_test ev1 root@localhost SYSTEM RECURRING NULL 5 # # NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
SET sql_mode=PAD_CHAR_TO_FULL_LENGTH;
|
||||
SHOW EVENTS;
|
||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||
events_test ev1 root@localhost SYSTEM RECURRING NULL 5 # # NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
DROP EVENT ev1;
|
||||
CREATE EVENT ev1 ON SCHEDULE EVERY 5 SECOND DO DELETE FROM t1;
|
||||
SHOW EVENTS;
|
||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||
events_test ev1 root@localhost SYSTEM RECURRING NULL 5 # # NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
DROP EVENT ev1;
|
||||
DROP TABLE t1;
|
||||
SET sql_mode=DEFAULT;
|
||||
|
||||
#
|
||||
# End of tests
|
||||
|
||||
@@ -2274,6 +2274,45 @@ EXECUTE stmt;
|
||||
t2_id GROUP_CONCAT(IF (t6.b, t6.f, t5.f) ORDER BY 1)
|
||||
DROP TABLE t1,t2,t3,t4,t5,t6;
|
||||
#
|
||||
# MDEV-10500 CASE/IF Statement returns multiple values and shifts further result values to the next column
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
id int not null AUTO_INCREMENT,
|
||||
active bool not null,
|
||||
data1 bigint,
|
||||
data2 bigint,
|
||||
data3 bigint,
|
||||
primary key (id)
|
||||
);
|
||||
INSERT INTO t1 (active,data1,data2,data3) VALUES (1,null,100,200);
|
||||
SELECT
|
||||
CASE WHEN active THEN SUM(data1) END AS C_1,
|
||||
SUM(data2) AS C_2,
|
||||
SUM(data3) AS C_3
|
||||
FROM t1;
|
||||
C_1 C_2 C_3
|
||||
NULL 100 200
|
||||
SELECT
|
||||
IF(active, SUM(data1), 5) AS C_1,
|
||||
SUM(data2) AS C_2,
|
||||
SUM(data3) AS C_3
|
||||
FROM t1;
|
||||
C_1 C_2 C_3
|
||||
NULL 100 200
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-10468 Assertion `nr >= 0.0' failed in Item_sum_std::val_real()
|
||||
#
|
||||
SELECT STDDEV_POP(f) FROM (SELECT "1e+309" AS f UNION SELECT "-1e+309" AS f) tbl;
|
||||
STDDEV_POP(f)
|
||||
1.7976931348623157e308
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '1e+309'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '-1e+309'
|
||||
SELECT STDDEV(f) FROM (SELECT 1.7976931348623157e+308 AS f UNION SELECT -1.7976931348623157e+308 AS f) tbl;
|
||||
STDDEV(f)
|
||||
1.7976931348623157e308
|
||||
#
|
||||
# MDEV-8852 Implicit or explicit CAST from MAX(string) to INT,DOUBLE,DECIMAL does not produce warnings
|
||||
#
|
||||
SELECT MAX('x') << 1, CAST(MAX('x') AS DOUBLE), CAST(MAX('x') AS DECIMAL);
|
||||
@@ -2340,5 +2379,58 @@ companynr AVG(fld1) avg1 avg2
|
||||
37 9223372036854775805.0000 9223372036854775805 9223372036854775805
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# case where aggregate resolved in the local SELECT
|
||||
# but outer ones are checked
|
||||
#
|
||||
create table t10 (a int , b int, c int);
|
||||
insert into t10 values (0,0,0),(1,1,1);
|
||||
create table t11 as select * from t10;
|
||||
create table t12 as select * from t10;
|
||||
explain extended select a from t10 where c<3 or a in (select c from t12 union select max(t10.b) from t11 group by t11.c);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t10 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t12 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
3 DEPENDENT UNION t11 ALL NULL NULL NULL NULL 2 100.00 Using temporary
|
||||
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t10.b' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 select `test`.`t10`.`a` AS `a` from `test`.`t10` where ((`test`.`t10`.`c` < 3) or <expr_cache><`test`.`t10`.`a`,`test`.`t10`.`b`>(<in_optimizer>(`test`.`t10`.`a`,<exists>(select `test`.`t12`.`c` from `test`.`t12` where (<cache>(`test`.`t10`.`a`) = `test`.`t12`.`c`) union select max(`test`.`t10`.`b`) from `test`.`t11` group by `test`.`t11`.`c` having (<cache>(`test`.`t10`.`a`) = <ref_null_helper>(max(`test`.`t10`.`b`)))))))
|
||||
drop table t10,t11,t12;
|
||||
#
|
||||
# MDEV-10017: Get unexpected `Empty Set` for correlated subquery
|
||||
# with aggregate functions
|
||||
#
|
||||
create table t1(c1 int, c2 int, c3 int);
|
||||
insert into t1 values(1,1,1),(2,2,2),(3,3,3);
|
||||
select * from t1;
|
||||
c1 c2 c3
|
||||
1 1 1
|
||||
2 2 2
|
||||
3 3 3
|
||||
create table t2(c1 int, c2 int);
|
||||
insert into t2 values(2,2);
|
||||
select * from t2;
|
||||
c1 c2
|
||||
2 2
|
||||
explain extended
|
||||
select c1 from t1 having c1 >= (select t.c1 as c from t2 t order by (select min(t1.c1+c) from t2 tt));
|
||||
ERROR HY000: Invalid use of group function
|
||||
select c1 from t1 having c1 >= (select t.c1 as c from t2 t order by (select min(t1.c1+c) from t2 tt));
|
||||
ERROR HY000: Invalid use of group function
|
||||
explain extended
|
||||
select c1 from t1 having c1 >= (select t.c1 as c from t2 t order by (select min(t1.c1+tt.c1) from t2 tt));
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DEPENDENT SUBQUERY t system NULL NULL NULL NULL 1 100.00
|
||||
3 DEPENDENT SUBQUERY tt system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.c1' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` having (`test`.`t1`.`c1` >= <expr_cache><`test`.`t1`.`c1`>((select 2 AS `c` from dual order by (select min((`test`.`t1`.`c1` + 2)) from dual))))
|
||||
select c1 from t1 having c1 >= (select t.c1 as c from t2 t order by (select min(t1.c1+tt.c1) from t2 tt));
|
||||
c1
|
||||
2
|
||||
3
|
||||
drop table t1,t2;
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
|
||||
@@ -813,6 +813,25 @@ EXECUTE s;
|
||||
DROP TABLE t1;
|
||||
# End of 5.3 tests
|
||||
#
|
||||
# Start of 10.0 tests
|
||||
#
|
||||
#
|
||||
# MDEV-10020 InnoDB NOT IN Query Crash When One Item Is NULL
|
||||
#
|
||||
CREATE TABLE t1
|
||||
(
|
||||
a INT(11),
|
||||
b VARCHAR(10),
|
||||
KEY (b)
|
||||
);
|
||||
INSERT INTO t1 VALUES (1,'x'),(2,'y'),(3,'z');
|
||||
SELECT * FROM t1 WHERE b NOT IN (NULL, '', 'A');
|
||||
a b
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Start of 10.1 tests
|
||||
#
|
||||
#
|
||||
# MDEV-8755 Equal field propagation is not performed any longer for the IN list when multiple comparison types
|
||||
#
|
||||
CREATE TABLE t1 (a INT);
|
||||
|
||||
@@ -787,12 +787,18 @@ select 5.9 div 2, 1.23456789e3 DIV 2, 1.23456789e9 DIV 2, 1.23456789e19 DIV 2;
|
||||
5.9 div 2 1.23456789e3 DIV 2 1.23456789e9 DIV 2 1.23456789e19 DIV 2
|
||||
2 617 617283945 6172839450000000000
|
||||
#
|
||||
# MDEV-10467 Assertion `nr >= 0.0' failed in Item_sum_std::val_real()
|
||||
#
|
||||
CREATE TABLE t1 (i INT);
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
SELECT STDDEV_SAMP(ROUND('0', 309)) FROM t1;
|
||||
STDDEV_SAMP(ROUND('0', 309))
|
||||
0
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.0 tests
|
||||
#
|
||||
#
|
||||
# MDEV-5781 Item_sum_std::val_real(): Assertion `nr >= 0.0' fails on query with STDDEV_POP, ROUND and variable
|
||||
#
|
||||
SELECT STDDEV_POP(ROUND(0,@A:=2009)) FROM (SELECT 1 UNION SELECT 2) fake_table;
|
||||
|
||||
@@ -570,6 +570,13 @@ AND 57813X540X1723 = 'Test';
|
||||
N AVG
|
||||
0 NULL
|
||||
drop table t1;
|
||||
SELECT NAME_CONST('a', -(1 OR 2)) OR 1;
|
||||
ERROR HY000: Incorrect arguments to NAME_CONST
|
||||
SELECT NAME_CONST('a', -(1 AND 2)) OR 1;
|
||||
ERROR HY000: Incorrect arguments to NAME_CONST
|
||||
SELECT NAME_CONST('a', -(1)) OR 1;
|
||||
NAME_CONST('a', -(1)) OR 1
|
||||
1
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
|
||||
@@ -2806,3 +2806,332 @@ Warning 1292 Truncated incorrect time value: '-1441:00:00'
|
||||
#
|
||||
# End of 10.0 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.1 tests
|
||||
#
|
||||
#
|
||||
# MDEV-10317 EXCTACT(MINUTE_MICROSECOND) truncates data
|
||||
#
|
||||
CREATE TABLE t1 (a DATETIME(6));
|
||||
INSERT INTO t1 VALUES ('1999-12-31 23:59:59.999999');
|
||||
SELECT
|
||||
a,
|
||||
EXTRACT(YEAR FROM a),
|
||||
EXTRACT(YEAR_MONTH FROM a),
|
||||
EXTRACT(QUARTER FROM a),
|
||||
EXTRACT(MONTH FROM a),
|
||||
EXTRACT(WEEK FROM a),
|
||||
EXTRACT(DAY FROM a),
|
||||
EXTRACT(DAY_HOUR FROM a),
|
||||
EXTRACT(DAY_MINUTE FROM a),
|
||||
EXTRACT(DAY_SECOND FROM a),
|
||||
EXTRACT(HOUR FROM a),
|
||||
EXTRACT(HOUR_MINUTE FROM a),
|
||||
EXTRACT(HOUR_SECOND FROM a),
|
||||
EXTRACT(MINUTE FROM a),
|
||||
EXTRACT(MINUTE_SECOND FROM a),
|
||||
EXTRACT(SECOND FROM a),
|
||||
EXTRACT(MICROSECOND FROM a),
|
||||
EXTRACT(DAY_MICROSECOND FROM a),
|
||||
EXTRACT(HOUR_MICROSECOND FROM a),
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a),
|
||||
EXTRACT(SECOND_MICROSECOND FROM a)
|
||||
FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 t1 a a 12 26 26 Y 128 6 63
|
||||
def EXTRACT(YEAR FROM a) 3 4 4 Y 32896 0 63
|
||||
def EXTRACT(YEAR_MONTH FROM a) 3 6 6 Y 32896 0 63
|
||||
def EXTRACT(QUARTER FROM a) 3 2 1 Y 32896 0 63
|
||||
def EXTRACT(MONTH FROM a) 3 2 2 Y 32896 0 63
|
||||
def EXTRACT(WEEK FROM a) 3 2 2 Y 32896 0 63
|
||||
def EXTRACT(DAY FROM a) 3 2 2 Y 32896 0 63
|
||||
def EXTRACT(DAY_HOUR FROM a) 3 5 4 Y 32896 0 63
|
||||
def EXTRACT(DAY_MINUTE FROM a) 3 7 6 Y 32896 0 63
|
||||
def EXTRACT(DAY_SECOND FROM a) 3 9 8 Y 32896 0 63
|
||||
def EXTRACT(HOUR FROM a) 3 3 2 Y 32896 0 63
|
||||
def EXTRACT(HOUR_MINUTE FROM a) 3 5 4 Y 32896 0 63
|
||||
def EXTRACT(HOUR_SECOND FROM a) 3 7 6 Y 32896 0 63
|
||||
def EXTRACT(MINUTE FROM a) 3 3 2 Y 32896 0 63
|
||||
def EXTRACT(MINUTE_SECOND FROM a) 3 5 4 Y 32896 0 63
|
||||
def EXTRACT(SECOND FROM a) 3 3 2 Y 32896 0 63
|
||||
def EXTRACT(MICROSECOND FROM a) 3 7 6 Y 32896 0 63
|
||||
def EXTRACT(DAY_MICROSECOND FROM a) 8 15 14 Y 32896 0 63
|
||||
def EXTRACT(HOUR_MICROSECOND FROM a) 8 13 12 Y 32896 0 63
|
||||
def EXTRACT(MINUTE_MICROSECOND FROM a) 8 11 10 Y 32896 0 63
|
||||
def EXTRACT(SECOND_MICROSECOND FROM a) 3 9 8 Y 32896 0 63
|
||||
a 1999-12-31 23:59:59.999999
|
||||
EXTRACT(YEAR FROM a) 1999
|
||||
EXTRACT(YEAR_MONTH FROM a) 199912
|
||||
EXTRACT(QUARTER FROM a) 4
|
||||
EXTRACT(MONTH FROM a) 12
|
||||
EXTRACT(WEEK FROM a) 52
|
||||
EXTRACT(DAY FROM a) 31
|
||||
EXTRACT(DAY_HOUR FROM a) 3123
|
||||
EXTRACT(DAY_MINUTE FROM a) 312359
|
||||
EXTRACT(DAY_SECOND FROM a) 31235959
|
||||
EXTRACT(HOUR FROM a) 23
|
||||
EXTRACT(HOUR_MINUTE FROM a) 2359
|
||||
EXTRACT(HOUR_SECOND FROM a) 235959
|
||||
EXTRACT(MINUTE FROM a) 59
|
||||
EXTRACT(MINUTE_SECOND FROM a) 5959
|
||||
EXTRACT(SECOND FROM a) 59
|
||||
EXTRACT(MICROSECOND FROM a) 999999
|
||||
EXTRACT(DAY_MICROSECOND FROM a) 31235959999999
|
||||
EXTRACT(HOUR_MICROSECOND FROM a) 235959999999
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a) 5959999999
|
||||
EXTRACT(SECOND_MICROSECOND FROM a) 59999999
|
||||
CREATE TABLE t2 AS SELECT
|
||||
a,
|
||||
EXTRACT(YEAR FROM a),
|
||||
EXTRACT(YEAR_MONTH FROM a),
|
||||
EXTRACT(QUARTER FROM a),
|
||||
EXTRACT(MONTH FROM a),
|
||||
EXTRACT(WEEK FROM a),
|
||||
EXTRACT(DAY FROM a),
|
||||
EXTRACT(DAY_HOUR FROM a),
|
||||
EXTRACT(DAY_MINUTE FROM a),
|
||||
EXTRACT(DAY_SECOND FROM a),
|
||||
EXTRACT(HOUR FROM a),
|
||||
EXTRACT(HOUR_MINUTE FROM a),
|
||||
EXTRACT(HOUR_SECOND FROM a),
|
||||
EXTRACT(MINUTE FROM a),
|
||||
EXTRACT(MINUTE_SECOND FROM a),
|
||||
EXTRACT(SECOND FROM a),
|
||||
EXTRACT(MICROSECOND FROM a),
|
||||
EXTRACT(DAY_MICROSECOND FROM a),
|
||||
EXTRACT(HOUR_MICROSECOND FROM a),
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a),
|
||||
EXTRACT(SECOND_MICROSECOND FROM a)
|
||||
FROM t1;
|
||||
SELECT * FROM t2;
|
||||
a 1999-12-31 23:59:59.999999
|
||||
EXTRACT(YEAR FROM a) 1999
|
||||
EXTRACT(YEAR_MONTH FROM a) 199912
|
||||
EXTRACT(QUARTER FROM a) 4
|
||||
EXTRACT(MONTH FROM a) 12
|
||||
EXTRACT(WEEK FROM a) 52
|
||||
EXTRACT(DAY FROM a) 31
|
||||
EXTRACT(DAY_HOUR FROM a) 3123
|
||||
EXTRACT(DAY_MINUTE FROM a) 312359
|
||||
EXTRACT(DAY_SECOND FROM a) 31235959
|
||||
EXTRACT(HOUR FROM a) 23
|
||||
EXTRACT(HOUR_MINUTE FROM a) 2359
|
||||
EXTRACT(HOUR_SECOND FROM a) 235959
|
||||
EXTRACT(MINUTE FROM a) 59
|
||||
EXTRACT(MINUTE_SECOND FROM a) 5959
|
||||
EXTRACT(SECOND FROM a) 59
|
||||
EXTRACT(MICROSECOND FROM a) 999999
|
||||
EXTRACT(DAY_MICROSECOND FROM a) 31235959999999
|
||||
EXTRACT(HOUR_MICROSECOND FROM a) 235959999999
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a) 5959999999
|
||||
EXTRACT(SECOND_MICROSECOND FROM a) 59999999
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` datetime(6) DEFAULT NULL,
|
||||
`EXTRACT(YEAR FROM a)` int(4) DEFAULT NULL,
|
||||
`EXTRACT(YEAR_MONTH FROM a)` int(6) DEFAULT NULL,
|
||||
`EXTRACT(QUARTER FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(MONTH FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(WEEK FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(DAY FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(DAY_HOUR FROM a)` int(5) DEFAULT NULL,
|
||||
`EXTRACT(DAY_MINUTE FROM a)` int(7) DEFAULT NULL,
|
||||
`EXTRACT(DAY_SECOND FROM a)` int(9) DEFAULT NULL,
|
||||
`EXTRACT(HOUR FROM a)` int(3) DEFAULT NULL,
|
||||
`EXTRACT(HOUR_MINUTE FROM a)` int(5) DEFAULT NULL,
|
||||
`EXTRACT(HOUR_SECOND FROM a)` int(7) DEFAULT NULL,
|
||||
`EXTRACT(MINUTE FROM a)` int(3) DEFAULT NULL,
|
||||
`EXTRACT(MINUTE_SECOND FROM a)` int(5) DEFAULT NULL,
|
||||
`EXTRACT(SECOND FROM a)` int(3) DEFAULT NULL,
|
||||
`EXTRACT(MICROSECOND FROM a)` int(7) DEFAULT NULL,
|
||||
`EXTRACT(DAY_MICROSECOND FROM a)` bigint(15) DEFAULT NULL,
|
||||
`EXTRACT(HOUR_MICROSECOND FROM a)` bigint(13) DEFAULT NULL,
|
||||
`EXTRACT(MINUTE_MICROSECOND FROM a)` bigint(11) DEFAULT NULL,
|
||||
`EXTRACT(SECOND_MICROSECOND FROM a)` int(9) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a TIME(6));
|
||||
INSERT INTO t1 VALUES ('-838:59:59.999999'),('838:59:59.999999');
|
||||
SELECT
|
||||
a,
|
||||
EXTRACT(YEAR FROM a),
|
||||
EXTRACT(YEAR_MONTH FROM a),
|
||||
EXTRACT(QUARTER FROM a),
|
||||
EXTRACT(MONTH FROM a),
|
||||
EXTRACT(WEEK FROM a),
|
||||
EXTRACT(DAY FROM a),
|
||||
EXTRACT(DAY_HOUR FROM a),
|
||||
EXTRACT(DAY_MINUTE FROM a),
|
||||
EXTRACT(DAY_SECOND FROM a),
|
||||
EXTRACT(HOUR FROM a),
|
||||
EXTRACT(HOUR_MINUTE FROM a),
|
||||
EXTRACT(HOUR_SECOND FROM a),
|
||||
EXTRACT(MINUTE FROM a),
|
||||
EXTRACT(MINUTE_SECOND FROM a),
|
||||
EXTRACT(SECOND FROM a),
|
||||
EXTRACT(MICROSECOND FROM a),
|
||||
EXTRACT(DAY_MICROSECOND FROM a),
|
||||
EXTRACT(HOUR_MICROSECOND FROM a),
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a),
|
||||
EXTRACT(SECOND_MICROSECOND FROM a)
|
||||
FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 t1 a a 11 17 17 Y 128 6 63
|
||||
def EXTRACT(YEAR FROM a) 3 4 1 Y 32896 0 63
|
||||
def EXTRACT(YEAR_MONTH FROM a) 3 6 1 Y 32896 0 63
|
||||
def EXTRACT(QUARTER FROM a) 3 2 1 Y 32896 0 63
|
||||
def EXTRACT(MONTH FROM a) 3 2 1 Y 32896 0 63
|
||||
def EXTRACT(WEEK FROM a) 3 2 9 Y 32896 0 63
|
||||
def EXTRACT(DAY FROM a) 3 2 2 Y 32896 0 63
|
||||
def EXTRACT(DAY_HOUR FROM a) 3 5 5 Y 32896 0 63
|
||||
def EXTRACT(DAY_MINUTE FROM a) 3 7 7 Y 32896 0 63
|
||||
def EXTRACT(DAY_SECOND FROM a) 3 9 9 Y 32896 0 63
|
||||
def EXTRACT(HOUR FROM a) 3 3 3 Y 32896 0 63
|
||||
def EXTRACT(HOUR_MINUTE FROM a) 3 5 5 Y 32896 0 63
|
||||
def EXTRACT(HOUR_SECOND FROM a) 3 7 7 Y 32896 0 63
|
||||
def EXTRACT(MINUTE FROM a) 3 3 3 Y 32896 0 63
|
||||
def EXTRACT(MINUTE_SECOND FROM a) 3 5 5 Y 32896 0 63
|
||||
def EXTRACT(SECOND FROM a) 3 3 3 Y 32896 0 63
|
||||
def EXTRACT(MICROSECOND FROM a) 3 7 7 Y 32896 0 63
|
||||
def EXTRACT(DAY_MICROSECOND FROM a) 8 15 15 Y 32896 0 63
|
||||
def EXTRACT(HOUR_MICROSECOND FROM a) 8 13 13 Y 32896 0 63
|
||||
def EXTRACT(MINUTE_MICROSECOND FROM a) 8 11 11 Y 32896 0 63
|
||||
def EXTRACT(SECOND_MICROSECOND FROM a) 3 9 9 Y 32896 0 63
|
||||
a -838:59:59.999999
|
||||
EXTRACT(YEAR FROM a) 0
|
||||
EXTRACT(YEAR_MONTH FROM a) 0
|
||||
EXTRACT(QUARTER FROM a) 0
|
||||
EXTRACT(MONTH FROM a) 0
|
||||
EXTRACT(WEEK FROM a) 613566757
|
||||
EXTRACT(DAY FROM a) 34
|
||||
EXTRACT(DAY_HOUR FROM a) -3422
|
||||
EXTRACT(DAY_MINUTE FROM a) -342259
|
||||
EXTRACT(DAY_SECOND FROM a) -34225959
|
||||
EXTRACT(HOUR FROM a) -22
|
||||
EXTRACT(HOUR_MINUTE FROM a) -2259
|
||||
EXTRACT(HOUR_SECOND FROM a) -225959
|
||||
EXTRACT(MINUTE FROM a) -59
|
||||
EXTRACT(MINUTE_SECOND FROM a) -5959
|
||||
EXTRACT(SECOND FROM a) -59
|
||||
EXTRACT(MICROSECOND FROM a) -999999
|
||||
EXTRACT(DAY_MICROSECOND FROM a) -34225959999999
|
||||
EXTRACT(HOUR_MICROSECOND FROM a) -225959999999
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a) -5959999999
|
||||
EXTRACT(SECOND_MICROSECOND FROM a) -59999999
|
||||
a 838:59:59.999999
|
||||
EXTRACT(YEAR FROM a) 0
|
||||
EXTRACT(YEAR_MONTH FROM a) 0
|
||||
EXTRACT(QUARTER FROM a) 0
|
||||
EXTRACT(MONTH FROM a) 0
|
||||
EXTRACT(WEEK FROM a) 613566757
|
||||
EXTRACT(DAY FROM a) 34
|
||||
EXTRACT(DAY_HOUR FROM a) 3422
|
||||
EXTRACT(DAY_MINUTE FROM a) 342259
|
||||
EXTRACT(DAY_SECOND FROM a) 34225959
|
||||
EXTRACT(HOUR FROM a) 22
|
||||
EXTRACT(HOUR_MINUTE FROM a) 2259
|
||||
EXTRACT(HOUR_SECOND FROM a) 225959
|
||||
EXTRACT(MINUTE FROM a) 59
|
||||
EXTRACT(MINUTE_SECOND FROM a) 5959
|
||||
EXTRACT(SECOND FROM a) 59
|
||||
EXTRACT(MICROSECOND FROM a) 999999
|
||||
EXTRACT(DAY_MICROSECOND FROM a) 34225959999999
|
||||
EXTRACT(HOUR_MICROSECOND FROM a) 225959999999
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a) 5959999999
|
||||
EXTRACT(SECOND_MICROSECOND FROM a) 59999999
|
||||
CREATE TABLE t2 AS SELECT
|
||||
a,
|
||||
EXTRACT(YEAR FROM a),
|
||||
EXTRACT(YEAR_MONTH FROM a),
|
||||
EXTRACT(QUARTER FROM a),
|
||||
EXTRACT(MONTH FROM a),
|
||||
EXTRACT(WEEK FROM a),
|
||||
EXTRACT(DAY FROM a),
|
||||
EXTRACT(DAY_HOUR FROM a),
|
||||
EXTRACT(DAY_MINUTE FROM a),
|
||||
EXTRACT(DAY_SECOND FROM a),
|
||||
EXTRACT(HOUR FROM a),
|
||||
EXTRACT(HOUR_MINUTE FROM a),
|
||||
EXTRACT(HOUR_SECOND FROM a),
|
||||
EXTRACT(MINUTE FROM a),
|
||||
EXTRACT(MINUTE_SECOND FROM a),
|
||||
EXTRACT(SECOND FROM a),
|
||||
EXTRACT(MICROSECOND FROM a),
|
||||
EXTRACT(DAY_MICROSECOND FROM a),
|
||||
EXTRACT(HOUR_MICROSECOND FROM a),
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a),
|
||||
EXTRACT(SECOND_MICROSECOND FROM a)
|
||||
FROM t1;
|
||||
SELECT * FROM t2;
|
||||
a -838:59:59.999999
|
||||
EXTRACT(YEAR FROM a) 0
|
||||
EXTRACT(YEAR_MONTH FROM a) 0
|
||||
EXTRACT(QUARTER FROM a) 0
|
||||
EXTRACT(MONTH FROM a) 0
|
||||
EXTRACT(WEEK FROM a) 613566757
|
||||
EXTRACT(DAY FROM a) 34
|
||||
EXTRACT(DAY_HOUR FROM a) -3422
|
||||
EXTRACT(DAY_MINUTE FROM a) -342259
|
||||
EXTRACT(DAY_SECOND FROM a) -34225959
|
||||
EXTRACT(HOUR FROM a) -22
|
||||
EXTRACT(HOUR_MINUTE FROM a) -2259
|
||||
EXTRACT(HOUR_SECOND FROM a) -225959
|
||||
EXTRACT(MINUTE FROM a) -59
|
||||
EXTRACT(MINUTE_SECOND FROM a) -5959
|
||||
EXTRACT(SECOND FROM a) -59
|
||||
EXTRACT(MICROSECOND FROM a) -999999
|
||||
EXTRACT(DAY_MICROSECOND FROM a) -34225959999999
|
||||
EXTRACT(HOUR_MICROSECOND FROM a) -225959999999
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a) -5959999999
|
||||
EXTRACT(SECOND_MICROSECOND FROM a) -59999999
|
||||
a 838:59:59.999999
|
||||
EXTRACT(YEAR FROM a) 0
|
||||
EXTRACT(YEAR_MONTH FROM a) 0
|
||||
EXTRACT(QUARTER FROM a) 0
|
||||
EXTRACT(MONTH FROM a) 0
|
||||
EXTRACT(WEEK FROM a) 613566757
|
||||
EXTRACT(DAY FROM a) 34
|
||||
EXTRACT(DAY_HOUR FROM a) 3422
|
||||
EXTRACT(DAY_MINUTE FROM a) 342259
|
||||
EXTRACT(DAY_SECOND FROM a) 34225959
|
||||
EXTRACT(HOUR FROM a) 22
|
||||
EXTRACT(HOUR_MINUTE FROM a) 2259
|
||||
EXTRACT(HOUR_SECOND FROM a) 225959
|
||||
EXTRACT(MINUTE FROM a) 59
|
||||
EXTRACT(MINUTE_SECOND FROM a) 5959
|
||||
EXTRACT(SECOND FROM a) 59
|
||||
EXTRACT(MICROSECOND FROM a) 999999
|
||||
EXTRACT(DAY_MICROSECOND FROM a) 34225959999999
|
||||
EXTRACT(HOUR_MICROSECOND FROM a) 225959999999
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a) 5959999999
|
||||
EXTRACT(SECOND_MICROSECOND FROM a) 59999999
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` time(6) DEFAULT NULL,
|
||||
`EXTRACT(YEAR FROM a)` int(4) DEFAULT NULL,
|
||||
`EXTRACT(YEAR_MONTH FROM a)` int(6) DEFAULT NULL,
|
||||
`EXTRACT(QUARTER FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(MONTH FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(WEEK FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(DAY FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(DAY_HOUR FROM a)` int(5) DEFAULT NULL,
|
||||
`EXTRACT(DAY_MINUTE FROM a)` int(7) DEFAULT NULL,
|
||||
`EXTRACT(DAY_SECOND FROM a)` int(9) DEFAULT NULL,
|
||||
`EXTRACT(HOUR FROM a)` int(3) DEFAULT NULL,
|
||||
`EXTRACT(HOUR_MINUTE FROM a)` int(5) DEFAULT NULL,
|
||||
`EXTRACT(HOUR_SECOND FROM a)` int(7) DEFAULT NULL,
|
||||
`EXTRACT(MINUTE FROM a)` int(3) DEFAULT NULL,
|
||||
`EXTRACT(MINUTE_SECOND FROM a)` int(5) DEFAULT NULL,
|
||||
`EXTRACT(SECOND FROM a)` int(3) DEFAULT NULL,
|
||||
`EXTRACT(MICROSECOND FROM a)` int(7) DEFAULT NULL,
|
||||
`EXTRACT(DAY_MICROSECOND FROM a)` bigint(15) DEFAULT NULL,
|
||||
`EXTRACT(HOUR_MICROSECOND FROM a)` bigint(13) DEFAULT NULL,
|
||||
`EXTRACT(MINUTE_MICROSECOND FROM a)` bigint(11) DEFAULT NULL,
|
||||
`EXTRACT(SECOND_MICROSECOND FROM a)` int(9) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
|
||||
@@ -710,7 +710,7 @@ mysqltest_db1.t3 preload_keys status OK
|
||||
# RENAME (doesn't work for temporary tables, thus should fail).
|
||||
#
|
||||
RENAME TABLE t3 TO t3_1;
|
||||
ERROR 42000: DROP, ALTER command denied to user 'mysqltest_u1'@'localhost' for table 't3'
|
||||
ERROR 42000: INSERT, CREATE command denied to user 'mysqltest_u1'@'localhost' for table 't3_1'
|
||||
#
|
||||
# HANDLER OPEN/READ/CLOSE.
|
||||
#
|
||||
|
||||
@@ -2692,3 +2692,37 @@ select distinct a from t1 group by 'a';
|
||||
a
|
||||
2001-02-02
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-10324: Server crash in get_sel_arg_for_keypart or Assertion `n < size()' failed in Mem_root_array
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
job_id int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
job_cmd varbinary(60) NOT NULL DEFAULT '',
|
||||
job_namespace int(11) NOT NULL,
|
||||
job_title varbinary(255) NOT NULL,
|
||||
job_params blob NOT NULL,
|
||||
job_timestamp varbinary(14) DEFAULT NULL,
|
||||
job_random int(10) unsigned NOT NULL DEFAULT '0',
|
||||
job_token varbinary(32) NOT NULL DEFAULT '',
|
||||
job_token_timestamp varbinary(14) DEFAULT NULL,
|
||||
job_sha1 varbinary(32) NOT NULL DEFAULT '',
|
||||
job_attempts int(10) unsigned NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (job_id),
|
||||
KEY job_cmd (job_cmd,job_namespace,job_title,job_params(128)),
|
||||
KEY job_timestamp (job_timestamp),
|
||||
KEY job_sha1 (job_sha1),
|
||||
KEY job_cmd_token (job_cmd,job_token,job_random),
|
||||
KEY job_cmd_token_id (job_cmd,job_token,job_id)
|
||||
);
|
||||
INSERT INTO t1 VALUES
|
||||
(NULL, 'foo', 1, 'foo', 'foo', 'foo', 1, 'foo', 'foo', 'foo', 1),
|
||||
(NULL, 'bar', 2, 'bar', 'bar', 'bar', 2, 'bar', 'bar', 'bar', 2);
|
||||
SELECT DISTINCT job_cmd FROM t1 WHERE job_cmd IN ('foobar','null');
|
||||
job_cmd
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (f1 INT NOT NULL, f2 VARCHAR(3) NOT NULL, KEY(f1), KEY(f2, f1));
|
||||
INSERT INTO t1 VALUES (0,'foo'),(1,'bar');
|
||||
SELECT 1 IN ( SELECT COUNT( DISTINCT f2 ) FROM t1 WHERE f1 <= 4 );
|
||||
1 IN ( SELECT COUNT( DISTINCT f2 ) FROM t1 WHERE f1 <= 4 )
|
||||
0
|
||||
drop table t1;
|
||||
|
||||
@@ -123,4 +123,39 @@ id xtext optionen
|
||||
2 number 22,25
|
||||
1 select Kabel mit Stecker 5-polig,Kabel ohne Stecker
|
||||
DROP TABLE t1, t2;
|
||||
# Port of testcase:
|
||||
#
|
||||
# Bug#20819199 ASSERTION FAILED IN TEST_IF_SKIP_SORT_ORDER
|
||||
#
|
||||
CREATE TABLE t0 ( a INT );
|
||||
INSERT INTO t0 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
||||
CREATE TABLE t1 (
|
||||
pk INT NOT NULL AUTO_INCREMENT,
|
||||
a INT,
|
||||
b INT,
|
||||
PRIMARY KEY (pk),
|
||||
KEY idx1 (a),
|
||||
KEY idx2 (b, a),
|
||||
KEY idx3 (a, b)
|
||||
) ENGINE = InnoDB;
|
||||
INSERT INTO t1 (a, b) SELECT t01.a, t02.a FROM t0 t01, t0 t02;
|
||||
ANALYZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
EXPLAIN SELECT DISTINCT a, MAX(b) FROM t1 WHERE a >= 0 GROUP BY a,a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx1,idx3 idx3 5 NULL 100 Using where; Using index
|
||||
SELECT DISTINCT a, MAX(b) FROM t1 WHERE a >= 0 GROUP BY a,a;
|
||||
a MAX(b)
|
||||
1 10
|
||||
2 10
|
||||
3 10
|
||||
4 10
|
||||
5 10
|
||||
6 10
|
||||
7 10
|
||||
8 10
|
||||
9 10
|
||||
10 10
|
||||
DROP TABLE t0, t1;
|
||||
# End of tests
|
||||
|
||||
@@ -2378,6 +2378,7 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
EXPLAIN SELECT max(b), a FROM t1 GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL a 5 NULL 8 Using index for group-by
|
||||
@@ -2387,6 +2388,7 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM (SELECT max(b), a FROM t1 GROUP BY a) b;
|
||||
max(b) a
|
||||
@@ -2398,6 +2400,7 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
FLUSH STATUS;
|
||||
(SELECT max(b), a FROM t1 GROUP BY a) UNION
|
||||
(SELECT max(b), a FROM t1 GROUP BY a);
|
||||
@@ -2410,6 +2413,7 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 16
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
EXPLAIN (SELECT max(b), a FROM t1 GROUP BY a) UNION
|
||||
(SELECT max(b), a FROM t1 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
@@ -2462,6 +2466,7 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
DELETE FROM t3;
|
||||
FLUSH STATUS;
|
||||
INSERT INTO t3 SELECT 1, (SELECT MAX(b) FROM t1 GROUP BY a HAVING a < 2)
|
||||
@@ -2470,12 +2475,14 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
FLUSH STATUS;
|
||||
DELETE FROM t3 WHERE (SELECT MAX(b) FROM t1 GROUP BY a HAVING a < 2) > 10000;
|
||||
SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
FLUSH STATUS;
|
||||
DELETE FROM t3 WHERE (SELECT (SELECT MAX(b) FROM t1 GROUP BY a HAVING a < 2) x
|
||||
FROM t1) > 10000;
|
||||
@@ -2484,6 +2491,7 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 1
|
||||
Handler_read_retry 0
|
||||
DROP TABLE t1,t2,t3;
|
||||
CREATE TABLE t1 (a int, INDEX idx(a));
|
||||
INSERT INTO t1 VALUES
|
||||
|
||||
@@ -12,6 +12,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -26,6 +27,7 @@ Handler_read_key 0
|
||||
Handler_read_last 1
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -42,6 +44,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 2
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -58,6 +61,7 @@ Handler_read_key 0
|
||||
Handler_read_last 1
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 2
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
|
||||
@@ -148,6 +148,21 @@ help 'impossible_category_1';
|
||||
source_category_name name is_it_category
|
||||
impossible_category_1 impossible_function_1 N
|
||||
impossible_category_1 impossible_function_2 N
|
||||
# MDEV-9524 Cannot load from mysql.event when sql_mode is set to PAD_CHAR_TO_FULL_LENGTH
|
||||
help 'impossible_function_1';
|
||||
name description example
|
||||
impossible_function_1 description of
|
||||
impossible_function1
|
||||
example of
|
||||
impossible_function1
|
||||
SET sql_mode=PAD_CHAR_TO_FULL_LENGTH;
|
||||
help 'impossible_function_1';
|
||||
name description example
|
||||
impossible_function_1 description of
|
||||
impossible_function1
|
||||
example of
|
||||
impossible_function1
|
||||
SET sql_mode=DEFAULT;
|
||||
set sql_mode="";
|
||||
alter table mysql.help_relation engine=innodb;
|
||||
alter table mysql.help_keyword engine=innodb;
|
||||
|
||||
70
mysql-test/r/information_schema_stats.result
Normal file
70
mysql-test/r/information_schema_stats.result
Normal file
@@ -0,0 +1,70 @@
|
||||
set global userstat=1;
|
||||
create table just_a_test(id int,first_name varchar(10),last_name varchar(10),address varchar(100),phone bigint,email varchar(30), state varchar(30));
|
||||
insert into just_a_test values(1,'fa','la','china_a',11111111,'fa_la@163.com','California'),
|
||||
(2,'fb','lb','china_b',22222222,'fb_lb@163.com','Arizona'),
|
||||
(3,'fc','lc','china_c',33333333,'fc_lc@163.com','California'),
|
||||
(4,'fd','ld','china_d',44444444,'fd_ld@163.com','Utah'),
|
||||
(5,'fe','le','china_e',55555555,'fe_le@163.com','Arizona');
|
||||
alter table just_a_test add primary key (id);
|
||||
alter table just_a_test add key IND_just_a_test_first_name_last_name(first_name,last_name);
|
||||
alter table just_a_test add key IND_just_a_test_state(state);
|
||||
select count(*) from just_a_test where first_name='fc' and last_name='lc';
|
||||
count(*)
|
||||
1
|
||||
select count(*) from just_a_test where state = 'California';
|
||||
count(*)
|
||||
2
|
||||
select * from information_schema.index_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME INDEX_NAME ROWS_READ
|
||||
test just_a_test IND_just_a_test_first_name_last_name 1
|
||||
test just_a_test IND_just_a_test_state 2
|
||||
select * from information_schema.table_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME ROWS_READ ROWS_CHANGED ROWS_CHANGED_X_INDEXES
|
||||
test just_a_test 18 5 5
|
||||
alter table just_a_test drop key IND_just_a_test_first_name_last_name;
|
||||
select * from information_schema.index_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME INDEX_NAME ROWS_READ
|
||||
test just_a_test IND_just_a_test_state 2
|
||||
select * from information_schema.table_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME ROWS_READ ROWS_CHANGED ROWS_CHANGED_X_INDEXES
|
||||
test just_a_test 23 5 5
|
||||
alter table just_a_test drop column state;
|
||||
select * from information_schema.index_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME INDEX_NAME ROWS_READ
|
||||
select * from information_schema.table_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME ROWS_READ ROWS_CHANGED ROWS_CHANGED_X_INDEXES
|
||||
test just_a_test 28 5 5
|
||||
drop table just_a_test;
|
||||
select * from information_schema.index_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME INDEX_NAME ROWS_READ
|
||||
select * from information_schema.table_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME ROWS_READ ROWS_CHANGED ROWS_CHANGED_X_INDEXES
|
||||
create table just_a_test(id int not null primary key,first_name varchar(10),last_name varchar(10),address varchar(100),phone bigint,email varchar(30), state varchar(30),key(first_name,last_name),key(state));
|
||||
insert into just_a_test values(1,'fa','la','china_a',11111111,'fa_la@163.com','California'),
|
||||
(2,'fb','lb','china_b',22222222,'fb_lb@163.com','Arizona'),
|
||||
(3,'fc','lc','china_c',33333333,'fc_lc@163.com','California'),
|
||||
(4,'fd','ld','china_d',44444444,'fd_ld@163.com','Utah'),
|
||||
(5,'fe','le','china_e',55555555,'fe_le@163.com','Arizona');
|
||||
select count(*) from just_a_test where first_name='fc' and last_name='lc';
|
||||
count(*)
|
||||
1
|
||||
select count(*) from just_a_test where state = 'California';
|
||||
count(*)
|
||||
2
|
||||
select count(*) from just_a_test where id between 2 and 4;
|
||||
count(*)
|
||||
3
|
||||
select * from information_schema.index_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME INDEX_NAME ROWS_READ
|
||||
test just_a_test PRIMARY 5
|
||||
test just_a_test first_name 1
|
||||
test just_a_test state 2
|
||||
select * from information_schema.table_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME ROWS_READ ROWS_CHANGED ROWS_CHANGED_X_INDEXES
|
||||
test just_a_test 8 5 15
|
||||
drop table just_a_test;
|
||||
select * from information_schema.index_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME INDEX_NAME ROWS_READ
|
||||
select * from information_schema.table_statistics where table_schema='test' and table_name='just_a_test';
|
||||
TABLE_SCHEMA TABLE_NAME ROWS_READ ROWS_CHANGED ROWS_CHANGED_X_INDEXES
|
||||
set global userstat=0;
|
||||
@@ -20,6 +20,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 5
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -39,6 +40,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 1
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -60,6 +62,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -81,6 +84,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -102,6 +106,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 6
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -123,6 +128,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 1
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -146,6 +152,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 6
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -169,6 +176,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 3
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -188,6 +196,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 6
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -207,6 +216,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -228,6 +238,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 6
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -249,6 +260,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -270,6 +282,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 5
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -291,6 +304,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -317,6 +331,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 9
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 9
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -343,6 +358,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 2
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 2
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -370,6 +386,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 9
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 9
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -397,6 +414,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 3
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 3
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -422,6 +440,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 9
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 3
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -447,6 +466,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 3
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 3
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -477,6 +497,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 294
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -507,6 +528,7 @@ Handler_read_key 21
|
||||
Handler_read_last 1
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -529,6 +551,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 1230
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -551,6 +574,7 @@ Handler_read_key 6
|
||||
Handler_read_last 1
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -581,6 +605,7 @@ Handler_read_key 3
|
||||
Handler_read_last 0
|
||||
Handler_read_next 26
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -610,6 +635,7 @@ Handler_read_key 3
|
||||
Handler_read_last 0
|
||||
Handler_read_next 3
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -807,6 +833,7 @@ Handler_read_key 10
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 11
|
||||
@@ -828,6 +855,7 @@ Handler_read_key 10
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 11
|
||||
@@ -1040,5 +1068,70 @@ a
|
||||
1
|
||||
drop table t1, t2;
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
#
|
||||
# MDEV-10325: Queries examines all rows of a tables when it should not
|
||||
#
|
||||
create table t0 (a int);
|
||||
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
create table t1 (
|
||||
pk int not null,
|
||||
col1 varchar(32),
|
||||
filler varchar(100),
|
||||
key idx1(col1(10)),
|
||||
primary key (pk)
|
||||
)engine=innodb;
|
||||
insert into t1
|
||||
select
|
||||
A.a + 10*B.a + 100*C.a,
|
||||
concat('1234567890-', 1000+ A.a + 10*B.a + 100*C.a),
|
||||
repeat('filler-data-', 4)
|
||||
from
|
||||
t0 A, t0 B, t0 C;
|
||||
drop table t0,t1;
|
||||
#
|
||||
# MDEV-10360: Extended keys: index properties depend on index order
|
||||
#
|
||||
create table t0 (a int);
|
||||
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
create table t1 (
|
||||
index_id bigint(20) unsigned NOT NULL,
|
||||
index_class varchar(265) COLLATE latin1_general_ci DEFAULT NULL ,
|
||||
index_object_id int(10) unsigned NOT NULL DEFAULT '0' ,
|
||||
index_date_updated int(10) unsigned DEFAULT NULL ,
|
||||
PRIMARY KEY (index_id),
|
||||
KEY object (index_class(181),index_object_id),
|
||||
KEY index_date_updated (index_date_updated)
|
||||
) engine=innodb;
|
||||
create table t2 (
|
||||
index_id bigint(20) unsigned NOT NULL,
|
||||
index_class varchar(265) COLLATE latin1_general_ci DEFAULT NULL ,
|
||||
index_object_id int(10) unsigned NOT NULL DEFAULT '0' ,
|
||||
index_date_updated int(10) unsigned DEFAULT NULL ,
|
||||
PRIMARY KEY (index_id),
|
||||
KEY index_date_updated (index_date_updated),
|
||||
KEY object (index_class(181),index_object_id)
|
||||
) engine=innodb;
|
||||
insert into t1 select
|
||||
@a:=A.a + 10*B.a + 100*C.a,
|
||||
concat('val-', @a),
|
||||
123456,
|
||||
A.a + 10*B.a
|
||||
from
|
||||
t0 A, t0 B, t0 C;
|
||||
insert into t2 select * from t1;
|
||||
# This must have the same query plan as the query below it:
|
||||
# type=range, key=index_date_updated, key_len=13
|
||||
explain
|
||||
select * from t1 force index(index_date_updated)
|
||||
where index_date_updated= 10 and index_id < 800;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range index_date_updated index_date_updated 13 NULL # Using index condition
|
||||
# This used to work from the start:
|
||||
explain
|
||||
select * from t2 force index(index_date_updated)
|
||||
where index_date_updated= 10 and index_id < 800;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 range index_date_updated index_date_updated 13 NULL # Using index condition
|
||||
drop table t0,t1,t2;
|
||||
set optimizer_switch=@save_ext_key_optimizer_switch;
|
||||
SET SESSION STORAGE_ENGINE=DEFAULT;
|
||||
|
||||
@@ -28,3 +28,18 @@ ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`
|
||||
UPDATE t1, t2 SET t1.fld1= t1.fld1 + 3;
|
||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`fld2`) REFERENCES `t1` (`fld1`))
|
||||
DROP TABLE t2, t1;
|
||||
#
|
||||
# BUG#22037930: INSERT IGNORE FAILS TO IGNORE FOREIGN
|
||||
# KEY CONSTRAINT
|
||||
CREATE TABLE t1 (fld1 INT PRIMARY KEY) ENGINE= INNODB;
|
||||
CREATE TABLE t2 (fld1 VARCHAR(10), fld2 INT NOT NULL,
|
||||
CONSTRAINT fk FOREIGN KEY (fld2) REFERENCES t1(fld1)) ENGINE= INNODB;
|
||||
# Without patch, reports incorrect error.
|
||||
INSERT INTO t2 VALUES('abc', 2) ON DUPLICATE KEY UPDATE fld1= 'def';
|
||||
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `fk` FOREIGN KEY (`fld2`) REFERENCES `t1` (`fld1`))
|
||||
REPLACE INTO t2 VALUES('abc', 2);
|
||||
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `fk` FOREIGN KEY (`fld2`) REFERENCES `t1` (`fld1`))
|
||||
INSERT IGNORE INTO t2 VALUES('abc', 2) ON DUPLICATE KEY UPDATE fld1= 'def';
|
||||
Warnings:
|
||||
Warning 1452 Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `fk` FOREIGN KEY (`fld2`) REFERENCES `t1` (`fld1`))
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
@@ -701,6 +701,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 1
|
||||
|
||||
@@ -860,6 +860,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 5
|
||||
@@ -1271,6 +1272,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 1
|
||||
|
||||
@@ -1244,6 +1244,7 @@ Handler_read_key 5
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 6
|
||||
@@ -1805,6 +1806,7 @@ Handler_read_key 4
|
||||
Handler_read_last 0
|
||||
Handler_read_next 5
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 1048581
|
||||
@@ -1819,6 +1821,7 @@ Handler_read_key 4
|
||||
Handler_read_last 0
|
||||
Handler_read_next 5
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 1048581
|
||||
|
||||
@@ -1255,6 +1255,7 @@ Handler_read_key 5
|
||||
Handler_read_last 0
|
||||
Handler_read_next 9
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 3
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 6
|
||||
@@ -1816,6 +1817,7 @@ Handler_read_key 4
|
||||
Handler_read_last 0
|
||||
Handler_read_next 5
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 5
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 1048581
|
||||
@@ -1830,6 +1832,7 @@ Handler_read_key 4
|
||||
Handler_read_last 0
|
||||
Handler_read_next 5
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 5
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 1048581
|
||||
|
||||
@@ -751,6 +751,7 @@ Handler_read_key 5
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 46
|
||||
@@ -775,6 +776,7 @@ Handler_read_key 5
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 2
|
||||
Handler_read_rnd_deleted 1
|
||||
Handler_read_rnd_next 47
|
||||
|
||||
@@ -531,7 +531,7 @@ DROP TABLE t1;
|
||||
# Bug#11765139 58069: LOAD DATA INFILE: VALGRIND REPORTS INVALID MEMORY READS AND WRITES WITH U
|
||||
#
|
||||
CREATE TABLE t1(f1 INT);
|
||||
SELECT 0xE1BB30 INTO OUTFILE 't1.dat';
|
||||
SELECT 0xE1C330 INTO OUTFILE 't1.dat';
|
||||
LOAD DATA INFILE 't1.dat' IGNORE INTO TABLE t1 CHARACTER SET utf8;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
@@ -556,3 +556,27 @@ FIELDS TERMINATED BY 't' LINES TERMINATED BY '';
|
||||
Got one of the listed errors
|
||||
SET @@sql_mode= @old_mode;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#23080148 - Backport of Bug#20683959.
|
||||
# Bug#20683959 LOAD DATA INFILE IGNORES A SPECIFIC ROW SILENTLY
|
||||
# UNDER DB CHARSET IS UTF8.
|
||||
#
|
||||
CREATE DATABASE d1 CHARSET latin1;
|
||||
USE d1;
|
||||
CREATE TABLE t1 (val TEXT);
|
||||
LOAD DATA INFILE '../../std_data/bug20683959loaddata.txt' INTO TABLE t1;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT HEX(val) FROM t1;
|
||||
HEX(val)
|
||||
C38322525420406E696F757A656368756E3A20E98198E2889AF58081AEE7B99DE4B88AE383A3E7B99DE69690F58087B3E7B9A7EFBDA8E7B99DEFBDB3E7B99DE78999E880B3E7B8BAEFBDAAE7B9A7E89699E296A1E7B8BAE4BBA3EFBD8CE7B8BAEFBDA9E7B8B2E2889AE38184E7B99DEFBDB3E7B99DE4B88AE383A3E7B99DE69690F58087B3E7B9A7EFBDA8E7B99DEFBDB3E7B99DE5B3A8EFBD84E8ABA0EFBDA8E89C89F580948EE599AAE7B8BAEFBDAAE7B8BAE9A198EFBDA9EFBDB1E7B9A7E581B5E289A0E7B8BAEFBDBEE7B9A7E9A194EFBDA9E882B4EFBDA5EFBDB5E980A7F5808B96E28693E99EABE38287E58F99E7B8BAE58AB1E28691E7B8BAF5808B9AE7828AE98095EFBDB1E7B8BAEFBDAFE7B8B2E288ABE6A89FE89EB3E6BA98F58081ADE88EA0EFBDBAE98095E6BA98F58081AEE89D93EFBDBAE8AD9BEFBDACE980A7F5808B96E28693E7B8BAF580918EE288AAE7B8BAE4B88AEFBC9EE7B8BAE4B99DE28691E7B8BAF5808B96EFBCA0E88DB3E6A68AEFBDB9EFBDB3E981B2E5B3A8E296A1E7B8BAE7A4BCE7828AE88DB3E6A68AEFBDB0EFBDBDE7B8BAA0E7B8BAE88B93EFBDBEE5B899EFBC9E
|
||||
CREATE DATABASE d2 CHARSET utf8;
|
||||
USE d2;
|
||||
CREATE TABLE t1 (val TEXT);
|
||||
LOAD DATA INFILE '../../std_data/bug20683959loaddata.txt' INTO TABLE t1;
|
||||
ERROR HY000: Invalid utf8 character string: 'Ã"RT @niouzechun: \9058\221A'
|
||||
DROP TABLE d1.t1, d2.t1;
|
||||
DROP DATABASE d1;
|
||||
DROP DATABASE d2;
|
||||
|
||||
@@ -102,6 +102,34 @@ SELECT monthname('2001-03-01');
|
||||
monthname('2001-03-01')
|
||||
März
|
||||
#
|
||||
# MDEV-10052 Illegal mix of collations with DAYNAME(date_field)<>varchar_field
|
||||
#
|
||||
SET NAMES utf8;
|
||||
CREATE TABLE t1 (c VARCHAR(8) CHARACTER SET latin1, d DATE);
|
||||
INSERT INTO t1 VALUES ('test',now());
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'd' at row 1
|
||||
SET lc_time_names=ru_RU;
|
||||
SELECT c FROM t1 WHERE DAYNAME(d)<>c;
|
||||
ERROR HY000: Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation '<>'
|
||||
SELECT c FROM t1 WHERE MONTHNAME(d)<>c;
|
||||
ERROR HY000: Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation '<>'
|
||||
SET lc_time_names=en_US;
|
||||
SELECT c FROM t1 WHERE DAYNAME(d)<>c;
|
||||
c
|
||||
test
|
||||
SELECT c FROM t1 WHERE MONTHNAME(d)<>c;
|
||||
c
|
||||
test
|
||||
SET NAMES latin1;
|
||||
SELECT c FROM t1 WHERE DAYNAME(d)<>c;
|
||||
c
|
||||
test
|
||||
SELECT c FROM t1 WHERE MONTHNAME(d)<>c;
|
||||
c
|
||||
test
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Start of 5.6 tests
|
||||
#
|
||||
#
|
||||
|
||||
@@ -1040,4 +1040,36 @@ f1 f2
|
||||
1 97
|
||||
DROP TABLE t1, t2;
|
||||
DROP VIEW v1;
|
||||
#
|
||||
# MDEV-5973: MySQL Bug#11757486:49539: NON-DESCRIPTIVE ERR (ERROR 0
|
||||
# FROM STORAGE ENGINE) WITH MULTI-TABLE UPDATE
|
||||
#
|
||||
CREATE TABLE table_11757486 (field1 tinyint) ENGINE=INNODB;
|
||||
INSERT INTO table_11757486 VALUES (0),(0);
|
||||
SET SESSION SQL_MODE='STRICT_ALL_TABLES';
|
||||
UPDATE IGNORE (SELECT 128 as col1) x, table_11757486 SET field1=x.col1;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'field1' at row 1
|
||||
Warning 1264 Out of range value for column 'field1' at row 2
|
||||
UPDATE IGNORE table_11757486 SET field1=128;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'field1' at row 1
|
||||
Warning 1264 Out of range value for column 'field1' at row 2
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. UPDATE IGNORE is unsafe because the order in which rows are updated determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.
|
||||
UPDATE (SELECT 128 as col1) x, table_11757486 SET field1=x.col1;
|
||||
ERROR 22003: Out of range value for column 'field1' at row 1
|
||||
UPDATE table_11757486 SET field1=128;
|
||||
ERROR 22003: Out of range value for column 'field1' at row 1
|
||||
SET SESSION SQL_MODE='';
|
||||
UPDATE IGNORE (SELECT 128 as col1) x, table_11757486 SET field1=x.col1;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'field1' at row 1
|
||||
Warning 1264 Out of range value for column 'field1' at row 2
|
||||
UPDATE IGNORE table_11757486 SET field1=128;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'field1' at row 1
|
||||
Warning 1264 Out of range value for column 'field1' at row 2
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. UPDATE IGNORE is unsafe because the order in which rows are updated determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.
|
||||
DROP TABLE table_11757486;
|
||||
SET SESSION SQL_MODE=default;
|
||||
end of 10.0 tests
|
||||
|
||||
114
mysql-test/r/myisam_enable_keys-10506.result
Normal file
114
mysql-test/r/myisam_enable_keys-10506.result
Normal file
@@ -0,0 +1,114 @@
|
||||
CREATE TABLE t1 (
|
||||
pk INT AUTO_INCREMENT,
|
||||
i INT,
|
||||
d DATE,
|
||||
dt DATETIME,
|
||||
v VARCHAR(1),
|
||||
PRIMARY KEY (pk),
|
||||
KEY (dt)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 (i, d, dt, v) VALUES
|
||||
(9, '2005-07-23', '2004-05-13 01:01:39', 't'),
|
||||
(2, '2009-11-01', '2003-12-24 07:39:29', 'h'),
|
||||
(6, NULL, '2008-07-03 05:32:22', 'l'),
|
||||
(6, '2007-07-16', '2008-08-28 18:46:11', 'j'),
|
||||
(5, NULL, '2001-07-12 21:27:00', 'h'),
|
||||
(3, '2007-07-22', '1900-01-01 00:00:00', 'p'),
|
||||
(2, '2000-11-21', '2007-05-25 11:58:54', 'g'),
|
||||
(6, '1900-01-01', '2009-06-03 17:11:10', 'i'),
|
||||
(2, '2008-02-10', '2001-06-15 16:20:07', 'p'),
|
||||
(3, '2009-06-04', '1900-01-01 00:00:00', 'h'),
|
||||
(9, '2007-04-25', '1900-01-01 00:00:00', 'e'),
|
||||
(9, '2006-03-02', '1900-01-01 00:00:00', 'e'),
|
||||
(1, '1900-01-01', '2002-11-08 09:33:27', 'u'),
|
||||
(7, '2008-07-13', '2007-08-07 17:35:52', 'j'),
|
||||
(0, '2004-11-12', '2006-05-01 00:00:00', 'e'),
|
||||
(0, '1900-01-01', '2003-05-01 00:00:00', 'z'),
|
||||
(1, '2009-09-02', '2007-02-12 09:30:49', 'w'),
|
||||
(0, '2004-11-06', '1900-01-01 00:00:00', 't'),
|
||||
(4, '2003-01-06', '2002-07-03 02:51:11', 'i'),
|
||||
(6, '2006-01-14', '2008-02-26 04:57:32', 'i'),
|
||||
(0, '2002-01-19', '2009-02-12 00:00:00', 'i'),
|
||||
(8, '2007-02-12', '1900-01-01 00:00:00', 'b'),
|
||||
(4, '1900-01-01', '2001-05-16 05:28:40', 'm'),
|
||||
(2, '2005-07-16', NULL, 'j'),
|
||||
(1, '2004-09-04', '2001-01-24 21:45:18', 'v'),
|
||||
(3, '2009-07-01', NULL, NULL),
|
||||
(2, '2009-07-21', '2002-07-24 00:00:00', 'h'),
|
||||
(4, NULL, '2001-11-03 12:22:30', 'q'),
|
||||
(1, '2002-06-22', '2008-06-17 03:17:59', 'f'),
|
||||
(7, '2005-06-23', '2005-12-24 00:00:00', 'p'),
|
||||
(6, '2001-05-20', '2008-10-23 00:00:00', NULL),
|
||||
(3, '2001-10-01', '2000-10-12 16:32:35', 'o'),
|
||||
(3, '2001-01-07', '2005-09-11 10:09:54', 'w'),
|
||||
(6, '2007-11-02', '2009-09-10 01:44:18', 'l'),
|
||||
(6, NULL, NULL, 'i'),
|
||||
(9, NULL, '2002-05-18 15:21:55', 'd'),
|
||||
(4, '2008-12-21', '2004-10-15 10:09:54', 'j'),
|
||||
(6, '2003-10-05', '2009-07-13 03:51:02', 'e'),
|
||||
(2, '2001-03-03', '1900-01-01 00:00:00', 'e'),
|
||||
(2, '2007-04-04', '2001-11-08 21:14:52', 'q'),
|
||||
(5, NULL, '2006-12-02 00:00:00', 'm'),
|
||||
(0, '2009-01-04', '1900-01-01 00:00:00', NULL),
|
||||
(8, '2008-04-03', '2005-01-01 11:55:18', 'q'),
|
||||
(8, NULL, '2005-02-28 03:44:02', 'w'),
|
||||
(0, '2003-08-22', NULL, 'c'),
|
||||
(9, '1900-01-01', NULL, 'y'),
|
||||
(NULL, NULL, '2006-08-25 16:28:09', 'g'),
|
||||
(5, '2004-07-04', '2002-08-11 00:00:00', 'z'),
|
||||
(1, '1900-01-01', '2007-07-22 21:19:18', 'm'),
|
||||
(2, '2007-02-04', '2006-02-10 18:41:38', 't'),
|
||||
(2, '1900-01-01', '2009-02-16 14:58:58', 'd'),
|
||||
(7, '2001-03-14', '2007-08-14 00:00:00', 'h'),
|
||||
(0, NULL, '1900-01-01 00:00:00', NULL),
|
||||
(1, '2008-10-05', NULL, 'f'),
|
||||
(6, '2001-11-25', '2008-12-03 06:59:23', 'l'),
|
||||
(NULL, '2003-01-27', '2008-10-04 00:00:00', 'g'),
|
||||
(8, '2008-08-08', '2009-07-07 07:00:21', 'v'),
|
||||
(8, '2006-07-03', '2001-04-15 00:00:00', NULL),
|
||||
(5, '2002-11-21', '2007-07-08 04:01:58', 'm'),
|
||||
(5, '2006-04-08', '2007-09-23 00:01:35', 'i'),
|
||||
(5, '2001-05-06', '2008-05-15 00:00:00', 'h'),
|
||||
(7, '1900-01-01', '1900-01-01 00:00:00', 'u'),
|
||||
(30, '2007-04-16', '2004-03-05 23:35:38', 'o'),
|
||||
(NULL, '1900-01-01', '2007-08-25 01:32:47', 'z'),
|
||||
(6, '2004-12-03', '1900-01-01 00:00:00', 'o'),
|
||||
(8, '2001-06-23', '1900-01-01 00:00:00', 'f'),
|
||||
(NULL, '2008-12-15', '2001-05-19 08:28:28', 'a'),
|
||||
(9, '2000-02-15', '2009-09-03 06:07:22', 'd'),
|
||||
(2, '2001-08-05', '2006-10-08 07:17:27', 'k'),
|
||||
(5, '2004-01-17', '2003-09-06 20:36:01', 'd'),
|
||||
(4, '2003-10-01', '2001-02-05 18:10:49', 'u'),
|
||||
(4, '2003-07-28', '2001-01-07 16:11:37', 'h'),
|
||||
(0, '1900-01-01', '2008-08-01 05:26:38', 'w'),
|
||||
(9, '1900-01-01', '2001-05-08 00:00:00', 't'),
|
||||
(1, '2000-04-17', '2008-07-10 21:26:28', 'i'),
|
||||
(8, '2002-01-05', '2006-08-06 20:56:35', 'k'),
|
||||
(9, '2001-04-10', '2003-02-17 00:00:00', 'z'),
|
||||
(0, '2009-12-04', NULL, 'h'),
|
||||
(7, NULL, '2004-10-27 00:29:57', 'h'),
|
||||
(2, '2006-03-07', '2008-03-04 06:14:13', 'b'),
|
||||
(0, '2001-10-15', '2001-03-17 00:00:00', 'm'),
|
||||
(5, '1900-01-01', '2009-02-21 11:35:50', 'i'),
|
||||
(4, NULL, '1900-01-01 00:00:00', 'w'),
|
||||
(5, '2009-04-05', '1900-01-01 00:00:00', 'm'),
|
||||
(6, '2001-03-19', '2001-04-12 00:00:00', 'q'),
|
||||
(NULL, '2009-12-08', '2001-12-04 20:21:01', 'k'),
|
||||
(2, '2005-02-09', '2001-05-27 08:41:01', 'l'),
|
||||
(9, '2004-05-25', '2004-09-18 00:00:00', 'c'),
|
||||
(3, '2005-01-17', '2002-09-12 11:18:48', 'd'),
|
||||
(0, '2003-08-28', '1900-01-01 00:00:00', 'k'),
|
||||
(6, '2006-10-11', '2003-10-28 03:31:02', 'a'),
|
||||
(5, '1900-01-01', '2001-08-22 10:20:09', 'p'),
|
||||
(8, '1900-01-01', '2008-04-24 00:00:00', 'o'),
|
||||
(4, '2005-08-18', '2006-11-10 10:08:49', 'e'),
|
||||
(NULL, '2007-03-12', '2007-10-16 00:00:00', 'n'),
|
||||
(1, '2000-11-18', '2009-05-27 12:25:07', 't'),
|
||||
(4, '2001-03-03', NULL, 'u'),
|
||||
(3, '2003-09-11', '2001-09-10 18:10:10', 'f'),
|
||||
(4, '2007-06-17', '1900-01-01 00:00:00', 't'),
|
||||
(NULL, '2008-09-11', '2004-06-07 23:17:09', 'k');
|
||||
ALTER TABLE t1 ADD UNIQUE KEY ind1 (pk, d, i, v);
|
||||
ALTER TABLE t1 ADD UNIQUE KEY ind2 (d, v);
|
||||
ERROR 23000: Duplicate entry '2008-09-11-k' for key 'ind2'
|
||||
DROP TABLE t1;
|
||||
@@ -343,10 +343,37 @@ DROP TABLE bug47205;
|
||||
#
|
||||
#MDEV-6128:[PATCH] mysqlcheck wrongly escapes '.' in table names
|
||||
#
|
||||
CREATE TABLE test.`t.1` (id int);
|
||||
create table `t.1` (id int);
|
||||
create view `v.1` as select 1;
|
||||
mysqlcheck test t.1
|
||||
test.t.1 OK
|
||||
drop table test.`t.1`;
|
||||
mysqlcheck --all-in-1 test t.1
|
||||
test.t.1 OK
|
||||
mysqlcheck --all-in-1 --databases --process-views test
|
||||
test.t.1 OK
|
||||
test.v.1 OK
|
||||
create table `t.2`(a varchar(20) primary key) default character set utf8 collate utf8_general_ci engine=innodb;
|
||||
flush table `t.2`;
|
||||
mysqlcheck --check-upgrade --auto-repair test
|
||||
test.t.1 OK
|
||||
test.t.2
|
||||
error : Table rebuild required. Please do "ALTER TABLE `t.2` FORCE" or dump/reload to fix it!
|
||||
test.t.3 Needs upgrade
|
||||
|
||||
Repairing tables
|
||||
test.t.3 OK
|
||||
check table `t.1`, `t.2`, `t.3`;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t.1 check status OK
|
||||
test.t.2 check status OK
|
||||
test.t.3 check status OK
|
||||
check table `t.1`, `t.2`, `t.3` for upgrade;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t.1 check status OK
|
||||
test.t.2 check status OK
|
||||
test.t.3 check status OK
|
||||
drop view `v.1`;
|
||||
drop table test.`t.1`, `t.2`, `t.3`;
|
||||
#
|
||||
# MDEV-8123 mysqlcheck: new --process-views option conflicts with --quick, --extended and such
|
||||
#
|
||||
@@ -376,6 +403,62 @@ Repairing views
|
||||
test.v1 OK
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
create table `#mysql50#t1``1` (a int) engine=myisam;
|
||||
show tables;
|
||||
Tables_in_test
|
||||
t1`1
|
||||
drop table `t1``1`;
|
||||
call mtr.add_suppression("ha_myisam");
|
||||
call mtr.add_suppression("Checking table");
|
||||
create database mysqltest1;
|
||||
create table mysqltest1.t1 (a int) engine=myisam;
|
||||
create table t2 (a int);
|
||||
check table mysqltest1.t1;
|
||||
Table Op Msg_type Msg_text
|
||||
mysqltest1.t1 check warning Size of datafile is: 4 Should be: 0
|
||||
mysqltest1.t1 check error got error: 0 when reading datafile at record: 0
|
||||
mysqltest1.t1 check error Corrupt
|
||||
mtr.global_suppressions Table is already up to date
|
||||
mtr.test_suppressions Table is already up to date
|
||||
mysql.column_stats Table is already up to date
|
||||
mysql.columns_priv Table is already up to date
|
||||
mysql.db Table is already up to date
|
||||
mysql.event Table is already up to date
|
||||
mysql.func Table is already up to date
|
||||
mysql.gtid_slave_pos Table is already up to date
|
||||
mysql.help_category Table is already up to date
|
||||
mysql.help_keyword Table is already up to date
|
||||
mysql.help_relation Table is already up to date
|
||||
mysql.help_topic Table is already up to date
|
||||
mysql.host Table is already up to date
|
||||
mysql.index_stats Table is already up to date
|
||||
mysql.innodb_index_stats OK
|
||||
mysql.innodb_table_stats OK
|
||||
mysql.plugin Table is already up to date
|
||||
mysql.proc Table is already up to date
|
||||
mysql.procs_priv Table is already up to date
|
||||
mysql.proxies_priv Table is already up to date
|
||||
mysql.roles_mapping Table is already up to date
|
||||
mysql.servers Table is already up to date
|
||||
mysql.table_stats Table is already up to date
|
||||
mysql.tables_priv Table is already up to date
|
||||
mysql.time_zone Table is already up to date
|
||||
mysql.time_zone_leap_second Table is already up to date
|
||||
mysql.time_zone_name Table is already up to date
|
||||
mysql.time_zone_transition Table is already up to date
|
||||
mysql.time_zone_transition_type Table is already up to date
|
||||
mysql.user Table is already up to date
|
||||
mysqltest1.t1
|
||||
warning : Table is marked as crashed
|
||||
warning : Size of datafile is: 4 Should be: 0
|
||||
error : got error: 0 when reading datafile at record: 0
|
||||
error : Corrupt
|
||||
test.t2 Table is already up to date
|
||||
|
||||
Repairing tables
|
||||
mysqltest1.t1 OK
|
||||
drop table t2;
|
||||
drop database mysqltest1;
|
||||
#
|
||||
#MDEV-7384 [PATCH] add PERSISENT FOR ALL option to mysqlanalyze/mysqlcheck
|
||||
#
|
||||
|
||||
@@ -2154,3 +2154,4 @@ Privat (Private Nutzung) Mobilfunk
|
||||
Warnings:
|
||||
Warning 1052 Column 'kundentyp' in group statement is ambiguous
|
||||
drop table t1;
|
||||
FOUND /\[ERROR\] Create named pipe failed/ in second-mysqld.err
|
||||
|
||||
@@ -1572,5 +1572,22 @@ SELECT * FROM t1 WHERE NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(N
|
||||
i
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-10236 Where expression with NOT function gives incorrect result
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
EXPLAIN EXTENDED
|
||||
SELECT * FROM t1 WHERE ((c1 IS NOT NULL) >= (NOT TRUE)) IS NOT NULL;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (((`test`.`t1`.`c1` is not null) >= <cache>((not(1)))) is not null)
|
||||
SELECT * FROM t1 WHERE ((c1 IS NOT NULL) >= (NOT TRUE)) IS NOT NULL;
|
||||
c1
|
||||
1
|
||||
2
|
||||
3
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
|
||||
@@ -429,6 +429,7 @@ Handler_read_key 6
|
||||
Handler_read_last 0
|
||||
Handler_read_next 2
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 5
|
||||
|
||||
@@ -58,8 +58,8 @@ mysqltest: Could not open connection 'default': 2026 SSL connection error: Unabl
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
have_ssl
|
||||
1
|
||||
End of 5.0 tests
|
||||
DROP TABLE IF EXISTS thread_status;
|
||||
DROP EVENT IF EXISTS event_status;
|
||||
@@ -204,9 +204,9 @@ result
|
||||
is still running; no cipher request crashed the server
|
||||
GRANT SELECT ON test.* TO bug42158@localhost REQUIRE X509;
|
||||
FLUSH PRIVILEGES;
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
||||
have_ssl
|
||||
1
|
||||
DROP USER bug42158@localhost;
|
||||
set global sql_mode=default;
|
||||
End of 5.1 tests
|
||||
|
||||
@@ -1163,7 +1163,7 @@ INSERT INTO t1 SELECT a +32, b +32 FROM t1;
|
||||
INSERT INTO t1 SELECT a +64, b +64 FROM t1;
|
||||
EXPLAIN SELECT a FROM t1 IGNORE INDEX FOR GROUP BY (a, ab) GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL ab 4 NULL 10 Using index for group-by
|
||||
1 SIMPLE t1 index NULL PRIMARY 4 NULL 128 Using index
|
||||
SELECT a FROM t1 IGNORE INDEX FOR GROUP BY (a, ab) GROUP BY a;
|
||||
a
|
||||
1
|
||||
@@ -2864,6 +2864,7 @@ Handler_read_key 250
|
||||
Handler_read_last 0
|
||||
Handler_read_next 249
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 249
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 250
|
||||
@@ -2882,6 +2883,7 @@ Handler_read_key 250
|
||||
Handler_read_last 0
|
||||
Handler_read_next 249
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 1
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 250
|
||||
|
||||
@@ -643,6 +643,26 @@ CREATE TRIGGER trigger1 BEFORE INSERT ON t1 FOR EACH ROW
|
||||
SET default_storage_engine = NEW.INNODB;
|
||||
ERROR 42S22: Unknown column 'INNODB' in 'NEW'
|
||||
DROP TABLE t1;
|
||||
select 0==0;
|
||||
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 '=0' at line 1
|
||||
select 1=!0, 1 = ! 0;
|
||||
1=!0 1 = ! 0
|
||||
1 1
|
||||
select !!0, ! ! 0;
|
||||
!!0 ! ! 0
|
||||
0 0
|
||||
select 2>!0, 2 > ! 0;
|
||||
2>!0 2 > ! 0
|
||||
1 1
|
||||
select 0<=!0, 0 <= !0;
|
||||
0<=!0 0 <= !0
|
||||
1 1
|
||||
select 1<<!0, 1 << !0;
|
||||
1<<!0 1 << !0
|
||||
2 2
|
||||
select 0<!0, 0 < ! 0;
|
||||
0<!0 0 < ! 0
|
||||
1 1
|
||||
#
|
||||
# MDEV-7792 - SQL Parsing Error - UNION AND ORDER BY WITH JOIN
|
||||
#
|
||||
|
||||
@@ -562,6 +562,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -582,6 +583,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -614,6 +616,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 2
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -632,6 +635,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 2
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -650,6 +654,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 2
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -668,6 +673,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 2
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
|
||||
@@ -19,7 +19,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_RND_NEXT 3
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 4 locks (1 table, 1 partition lock/unlock)
|
||||
FLUSH STATUS;
|
||||
SELECT a FROM t1 PARTITION (p0);
|
||||
@@ -31,7 +31,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_RND_NEXT 3
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 4 locks (1 table, 1 partition lock/unlock)
|
||||
FLUSH STATUS;
|
||||
INSERT INTO v1 VALUES (10);
|
||||
@@ -39,14 +39,14 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 2
|
||||
# 4 locks (1 table, 1 partition lock/unlock)
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 2 locks (1 table, all partitions pruned)
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM v1;
|
||||
@@ -59,7 +59,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_RND_NEXT 4
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 4 locks (1 table, 1 partition lock/unlock)
|
||||
FLUSH STATUS;
|
||||
SELECT a FROM t1 PARTITION (p0);
|
||||
@@ -72,7 +72,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_RND_NEXT 4
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 4 locks (1 table, 1 partition lock/unlock)
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
@@ -89,14 +89,14 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 2
|
||||
# 4 locks (1 table, 1 partition lock/unlock)
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 2 locks (1 table, all partitions pruned)
|
||||
SELECT * FROM v1;
|
||||
a
|
||||
@@ -121,7 +121,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 2
|
||||
# 4 locks (1 table, 1 partition lock/unlock)
|
||||
FLUSH STATUS;
|
||||
@@ -131,7 +131,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_ROLLBACK 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 2 locks (1 table, all partitions pruned)
|
||||
FLUSH STATUS;
|
||||
INSERT INTO v1 VALUES (32);
|
||||
@@ -140,7 +140,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_ROLLBACK 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 4 locks (1 table, 1 partition lock/unlock)
|
||||
SELECT * FROM v1;
|
||||
a
|
||||
@@ -166,12 +166,12 @@ FLUSH STATUS;
|
||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_READ_RND_NEXT 26
|
||||
HANDLER_TMP_WRITE 47
|
||||
HANDLER_READ_RND_NEXT 27
|
||||
HANDLER_TMP_WRITE 49
|
||||
# OK, seems to add number of variables processed before HANDLER_WRITE
|
||||
# and number of variables + 1 evaluated in the previous call in RND_NEXT
|
||||
CREATE TABLE t1
|
||||
@@ -233,7 +233,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 2
|
||||
# Should be 1 commit
|
||||
# 4 external locks (due to pruning of locks)
|
||||
@@ -250,7 +250,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 2
|
||||
# Should be 1 commit
|
||||
# 4 external locks
|
||||
@@ -262,7 +262,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# should be 1 commit
|
||||
# 9 locks (1 ha_partition + 8 ha_innobase)
|
||||
# 17 writes (internal I_S)
|
||||
@@ -271,8 +271,8 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 2
|
||||
HANDLER_READ_RND_NEXT 26
|
||||
HANDLER_TMP_WRITE 47
|
||||
HANDLER_READ_RND_NEXT 27
|
||||
HANDLER_TMP_WRITE 49
|
||||
HANDLER_WRITE 2
|
||||
# + 1 commit
|
||||
# + 19 rnd next (internal I_S)
|
||||
@@ -282,8 +282,8 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 2
|
||||
HANDLER_READ_RND_NEXT 52
|
||||
HANDLER_TMP_WRITE 72
|
||||
HANDLER_READ_RND_NEXT 54
|
||||
HANDLER_TMP_WRITE 75
|
||||
HANDLER_WRITE 2
|
||||
# + 9 locks (unlocks)
|
||||
# + 19 rnd next (internal I_S)
|
||||
@@ -338,7 +338,7 @@ ERROR HY000: Unknown partition 'pNonexistent' in table 't1'
|
||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# should have failed before locking (only 17 internal I_S writes)
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM t1 PARTITION (subp2);
|
||||
@@ -348,7 +348,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_FIRST 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# Should be 1 commit
|
||||
# 4 locks (1 ha_partition + 1 ha_innobase) x 2 (lock/unlock)
|
||||
# 1 read first (also calls index_read)
|
||||
@@ -366,7 +366,7 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_FIRST 3
|
||||
HANDLER_READ_NEXT 3
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# Should be 1 commit
|
||||
# 8 locks (1 ha_partition + 2 + 1 ha_innobase) x 2
|
||||
# 3 read first (one for each partition)
|
||||
@@ -379,7 +379,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 1 commit
|
||||
# 18 locks
|
||||
# 18 READ KEY from opening a new partition table instance,
|
||||
@@ -398,8 +398,8 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 2
|
||||
HANDLER_READ_FIRST 1
|
||||
HANDLER_READ_NEXT 3
|
||||
HANDLER_READ_RND_NEXT 26
|
||||
HANDLER_TMP_WRITE 47
|
||||
HANDLER_READ_RND_NEXT 27
|
||||
HANDLER_TMP_WRITE 49
|
||||
# + 1 commit
|
||||
# + 1 read first (read first key from index in one partition)
|
||||
# + 2 read key (innobase_get_index from index_init + from index_first)
|
||||
@@ -415,8 +415,8 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 3
|
||||
HANDLER_READ_FIRST 3
|
||||
HANDLER_READ_NEXT 4
|
||||
HANDLER_READ_RND_NEXT 52
|
||||
HANDLER_TMP_WRITE 72
|
||||
HANDLER_READ_RND_NEXT 54
|
||||
HANDLER_TMP_WRITE 75
|
||||
# + 1 commit
|
||||
# + 2 read first (one for each subpart)
|
||||
# + 4 read key (innobase_get_index from index_init + from index_first)
|
||||
@@ -431,8 +431,8 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 4
|
||||
HANDLER_READ_FIRST 3
|
||||
HANDLER_READ_NEXT 4
|
||||
HANDLER_READ_RND_NEXT 78
|
||||
HANDLER_TMP_WRITE 97
|
||||
HANDLER_READ_RND_NEXT 81
|
||||
HANDLER_TMP_WRITE 101
|
||||
# No matching partition, only internal I_S.
|
||||
SELECT * FROM t1 PARTITION (pNeg) WHERE a = 100;
|
||||
a b
|
||||
@@ -443,8 +443,8 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 5
|
||||
HANDLER_READ_FIRST 3
|
||||
HANDLER_READ_NEXT 4
|
||||
HANDLER_READ_RND_NEXT 104
|
||||
HANDLER_TMP_WRITE 122
|
||||
HANDLER_READ_RND_NEXT 108
|
||||
HANDLER_TMP_WRITE 127
|
||||
# + 18 for unlock (same as lock above) (100 is not in pNeg, no match)
|
||||
# Test that EXPLAIN PARTITION works
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 PARTITION (pNonexistent);
|
||||
@@ -460,7 +460,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 8 locks (1 ha_partition + 3 ha_innobase) x 2 (lock/unlock)
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 PARTITION (subp3) AS TableAlias;
|
||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||
@@ -513,7 +513,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_ROLLBACK 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 1
|
||||
# 2 locks (1 ha_partition) x 2 (lock/unlock), Was 4 locks before WL4443
|
||||
# explicit pruning says part_id 0 and implicit pruning says part_id 1
|
||||
@@ -526,7 +526,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 2
|
||||
# 1 commit
|
||||
# 4 locks (1 ha_partition + 1 ha_innobase) x 2 (lock/unlock)
|
||||
@@ -544,7 +544,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_KEY 2
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_UPDATE 2
|
||||
HANDLER_WRITE 2
|
||||
# 1 commit
|
||||
@@ -566,7 +566,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 1 commit
|
||||
# 9 locks
|
||||
# 17 write (internal I_S)
|
||||
@@ -578,8 +578,8 @@ HANDLER_COMMIT 2
|
||||
HANDLER_DELETE 2
|
||||
HANDLER_READ_KEY 1
|
||||
HANDLER_READ_NEXT 1
|
||||
HANDLER_READ_RND_NEXT 26
|
||||
HANDLER_TMP_WRITE 47
|
||||
HANDLER_READ_RND_NEXT 27
|
||||
HANDLER_TMP_WRITE 49
|
||||
# + 1 commit
|
||||
# + 1 delete (one row deleted)
|
||||
# + 3 read key (1 innodb_get_index in records_in_range,
|
||||
@@ -596,9 +596,9 @@ HANDLER_COMMIT 2
|
||||
HANDLER_DELETE 2
|
||||
HANDLER_READ_KEY 1
|
||||
HANDLER_READ_NEXT 1
|
||||
HANDLER_READ_RND_NEXT 52
|
||||
HANDLER_READ_RND_NEXT 54
|
||||
HANDLER_ROLLBACK 1
|
||||
HANDLER_TMP_WRITE 72
|
||||
HANDLER_TMP_WRITE 75
|
||||
HANDLER_WRITE 1
|
||||
# Failed before start_stmt/execution.
|
||||
# + 19 rnd next (internal I_S)
|
||||
@@ -612,9 +612,9 @@ HANDLER_COMMIT 3
|
||||
HANDLER_DELETE 2
|
||||
HANDLER_READ_KEY 1
|
||||
HANDLER_READ_NEXT 1
|
||||
HANDLER_READ_RND_NEXT 78
|
||||
HANDLER_READ_RND_NEXT 81
|
||||
HANDLER_ROLLBACK 1
|
||||
HANDLER_TMP_WRITE 97
|
||||
HANDLER_TMP_WRITE 101
|
||||
HANDLER_WRITE 3
|
||||
# + 1 commit
|
||||
# + 19 rnd next (internal I_S)
|
||||
@@ -627,9 +627,9 @@ HANDLER_COMMIT 4
|
||||
HANDLER_DELETE 2
|
||||
HANDLER_READ_KEY 3
|
||||
HANDLER_READ_NEXT 1
|
||||
HANDLER_READ_RND_NEXT 104
|
||||
HANDLER_READ_RND_NEXT 108
|
||||
HANDLER_ROLLBACK 1
|
||||
HANDLER_TMP_WRITE 122
|
||||
HANDLER_TMP_WRITE 127
|
||||
HANDLER_UPDATE 2
|
||||
HANDLER_WRITE 5
|
||||
# + 1 commit
|
||||
@@ -650,9 +650,9 @@ HANDLER_DELETE 2
|
||||
HANDLER_READ_FIRST 1
|
||||
HANDLER_READ_KEY 3
|
||||
HANDLER_READ_NEXT 4
|
||||
HANDLER_READ_RND_NEXT 130
|
||||
HANDLER_READ_RND_NEXT 135
|
||||
HANDLER_ROLLBACK 1
|
||||
HANDLER_TMP_WRITE 147
|
||||
HANDLER_TMP_WRITE 153
|
||||
HANDLER_UPDATE 2
|
||||
HANDLER_WRITE 5
|
||||
# + 1 commit
|
||||
@@ -670,9 +670,9 @@ HANDLER_DELETE 2
|
||||
HANDLER_READ_FIRST 1
|
||||
HANDLER_READ_KEY 3
|
||||
HANDLER_READ_NEXT 4
|
||||
HANDLER_READ_RND_NEXT 156
|
||||
HANDLER_READ_RND_NEXT 162
|
||||
HANDLER_ROLLBACK 1
|
||||
HANDLER_TMP_WRITE 172
|
||||
HANDLER_TMP_WRITE 179
|
||||
HANDLER_UPDATE 2
|
||||
HANDLER_WRITE 5
|
||||
# + 9 locks
|
||||
@@ -696,7 +696,7 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_FIRST 4
|
||||
HANDLER_READ_NEXT 5
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 1 commit
|
||||
# 10 locks (1 ha_partition + 4 ha_innobase) x 2 (lock/unlock)
|
||||
# 4 read first (for reading the first row in 4 partitions)
|
||||
@@ -709,7 +709,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 10 locks (table + 4 partition) x (lock + unlock)
|
||||
SELECT * FROM t1 PARTITION (pNeg, `p10-99`);
|
||||
a b
|
||||
@@ -720,7 +720,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_ROLLBACK 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 3
|
||||
# 6 locks (1 ha_partition + 2 ha_innobase) x 2 (lock+unlock)
|
||||
# 1 rollback
|
||||
@@ -732,7 +732,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 10
|
||||
# 10 lock (1 ha_partition + 4 ha_innobase) x 2 (lock + unlock)
|
||||
ALTER TABLE t1 TRUNCATE PARTITION pNeg, `p10-99`;
|
||||
@@ -742,7 +742,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 9 locks
|
||||
# 18 read key (ALTER forces table to be closed, see above for open)
|
||||
LOAD DATA INFILE 'loadtest.txt' INTO TABLE t1 PARTITION (pNeg, `p10-99`);
|
||||
@@ -750,8 +750,8 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 2
|
||||
HANDLER_READ_RND_NEXT 26
|
||||
HANDLER_TMP_WRITE 47
|
||||
HANDLER_READ_RND_NEXT 27
|
||||
HANDLER_TMP_WRITE 49
|
||||
HANDLER_WRITE 10
|
||||
# + 23 write (18 internal I_S + 5 rows)
|
||||
UNLOCK TABLES;
|
||||
@@ -759,8 +759,8 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 2
|
||||
HANDLER_READ_RND_NEXT 52
|
||||
HANDLER_TMP_WRITE 72
|
||||
HANDLER_READ_RND_NEXT 54
|
||||
HANDLER_TMP_WRITE 75
|
||||
HANDLER_WRITE 10
|
||||
# + 9 locks
|
||||
#
|
||||
@@ -773,7 +773,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_RND_NEXT 2
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_UPDATE 2
|
||||
# 1 commit
|
||||
# 4 lock (1 ha_partition + 1 ha_innobase) x 2 (lock + unlock)
|
||||
@@ -791,7 +791,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_KEY 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_UPDATE 2
|
||||
# 1 commit
|
||||
# 4 lock
|
||||
@@ -806,7 +806,7 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_KEY 1
|
||||
HANDLER_READ_RND 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_UPDATE 2
|
||||
# 1 commit
|
||||
# 4 lock
|
||||
@@ -819,7 +819,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# Nothing, since impossible PARTITION+WHERE clause.
|
||||
FLUSH STATUS;
|
||||
UPDATE t1 PARTITION(subp0) SET a = -2, b = concat(b, ', Updated from a = 100')
|
||||
@@ -828,7 +828,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# Nothing, since impossible PARTITION+WHERE clause.
|
||||
FLUSH STATUS;
|
||||
UPDATE t1 PARTITION(`p100-99999`) SET a = -2, b = concat(b, ', Updated from a = 100')
|
||||
@@ -840,7 +840,7 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_READ_KEY 1
|
||||
HANDLER_READ_RND 1
|
||||
HANDLER_ROLLBACK 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_UPDATE 1
|
||||
# 6 lock
|
||||
# 4 read key (1 index init + 1 index read + 1 rnd init + 1 rnd pos)
|
||||
@@ -856,7 +856,7 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_READ_KEY 1
|
||||
HANDLER_READ_RND 1
|
||||
HANDLER_ROLLBACK 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_UPDATE 1
|
||||
HANDLER_WRITE 1
|
||||
# 10 locks
|
||||
@@ -874,7 +874,7 @@ HANDLER_COMMIT 1
|
||||
HANDLER_DELETE 1
|
||||
HANDLER_READ_KEY 1
|
||||
HANDLER_READ_RND 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_UPDATE 1
|
||||
HANDLER_WRITE 1
|
||||
# 1 commit
|
||||
@@ -902,7 +902,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# Nothing (no matching partition found)
|
||||
FLUSH STATUS;
|
||||
UPDATE t1 PARTITION (pNeg) SET b = concat(b, ', Updated2') WHERE a = 1000000;
|
||||
@@ -910,7 +910,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# Nothing (no matching partition found)
|
||||
FLUSH STATUS;
|
||||
LOCK TABLE t1 WRITE;
|
||||
@@ -918,7 +918,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 9 locks
|
||||
UPDATE t1 PARTITION (subp7) SET b = concat(b, ', Updated to 103'), a = 103 WHERE a = 101;
|
||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
@@ -927,8 +927,8 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 2
|
||||
HANDLER_READ_KEY 1
|
||||
HANDLER_READ_RND 1
|
||||
HANDLER_READ_RND_NEXT 26
|
||||
HANDLER_TMP_WRITE 47
|
||||
HANDLER_READ_RND_NEXT 27
|
||||
HANDLER_TMP_WRITE 49
|
||||
HANDLER_UPDATE 2
|
||||
# + 4 read key
|
||||
# + 1 read rnd
|
||||
@@ -941,8 +941,8 @@ HANDLER_COMMIT 3
|
||||
HANDLER_DELETE 1
|
||||
HANDLER_READ_KEY 2
|
||||
HANDLER_READ_RND 2
|
||||
HANDLER_READ_RND_NEXT 52
|
||||
HANDLER_TMP_WRITE 72
|
||||
HANDLER_READ_RND_NEXT 54
|
||||
HANDLER_TMP_WRITE 75
|
||||
HANDLER_UPDATE 3
|
||||
HANDLER_WRITE 1
|
||||
# + 1 delete
|
||||
@@ -957,8 +957,8 @@ HANDLER_COMMIT 3
|
||||
HANDLER_DELETE 1
|
||||
HANDLER_READ_KEY 2
|
||||
HANDLER_READ_RND 2
|
||||
HANDLER_READ_RND_NEXT 78
|
||||
HANDLER_TMP_WRITE 97
|
||||
HANDLER_READ_RND_NEXT 81
|
||||
HANDLER_TMP_WRITE 101
|
||||
HANDLER_UPDATE 3
|
||||
HANDLER_WRITE 1
|
||||
+ 9 locks
|
||||
@@ -986,7 +986,7 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_DELETE 2
|
||||
HANDLER_READ_KEY 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 1 delete
|
||||
# 4 locks (pruning works!).
|
||||
# 1 read key (index read)
|
||||
@@ -998,7 +998,7 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_DELETE 2
|
||||
HANDLER_READ_RND_NEXT 3
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 1 delete
|
||||
# 4 locks
|
||||
# 1 read first
|
||||
@@ -1010,7 +1010,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 9 locks
|
||||
DELETE FROM t1 PARTITION (subp1) WHERE b = 'p0-9:subp3';
|
||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
@@ -1018,8 +1018,8 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 2
|
||||
HANDLER_READ_KEY 1
|
||||
HANDLER_READ_RND_NEXT 26
|
||||
HANDLER_TMP_WRITE 47
|
||||
HANDLER_READ_RND_NEXT 27
|
||||
HANDLER_TMP_WRITE 49
|
||||
# + 3 read key (1 innodb_get_index in records_in_range
|
||||
# + 1 innobase_get_index in index_init + 1 index read)
|
||||
DELETE FROM t1 PARTITION (`p0-9`) WHERE b = 'p0-9:subp3';
|
||||
@@ -1030,8 +1030,8 @@ HANDLER_COMMIT 3
|
||||
HANDLER_DELETE 2
|
||||
HANDLER_READ_KEY 3
|
||||
HANDLER_READ_NEXT 1
|
||||
HANDLER_READ_RND_NEXT 52
|
||||
HANDLER_TMP_WRITE 72
|
||||
HANDLER_READ_RND_NEXT 54
|
||||
HANDLER_TMP_WRITE 75
|
||||
# + 1 delete
|
||||
# + 6 read key (same as above, but for two subpartitions)
|
||||
# + 1 read next (read next after found row)
|
||||
@@ -1043,8 +1043,8 @@ HANDLER_COMMIT 3
|
||||
HANDLER_DELETE 2
|
||||
HANDLER_READ_KEY 3
|
||||
HANDLER_READ_NEXT 1
|
||||
HANDLER_READ_RND_NEXT 78
|
||||
HANDLER_TMP_WRITE 97
|
||||
HANDLER_READ_RND_NEXT 81
|
||||
HANDLER_TMP_WRITE 101
|
||||
# + 9 locks
|
||||
# Test multi-table DELETE
|
||||
# Can be expressed in two different ways.
|
||||
@@ -1057,7 +1057,7 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_FIRST 5
|
||||
HANDLER_READ_NEXT 5
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 10
|
||||
# 24 locks (2 table, 5 + 5 subpartitions lock/unlock)
|
||||
FLUSH STATUS;
|
||||
@@ -1066,7 +1066,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 14 locks (1 table, 6 subpartitions lock/unlock)
|
||||
FLUSH STATUS;
|
||||
INSERT INTO t2 PARTITION (subp3) SELECT * FROM t1 PARTITION (subp3, `p10-99`, `p100-99999`);
|
||||
@@ -1076,7 +1076,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_READ_FIRST 5
|
||||
HANDLER_ROLLBACK 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 1
|
||||
# 16 locks (2 tables, 1 + 5 subpartitions lock/unlock)
|
||||
FLUSH STATUS;
|
||||
@@ -1091,7 +1091,7 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_FIRST 5
|
||||
HANDLER_READ_NEXT 5
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 7
|
||||
# 16 locks (2 tables, 1 + 5 subpartitions lock/unlock)
|
||||
TRUNCATE TABLE t2;
|
||||
@@ -1103,7 +1103,7 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_FIRST 5
|
||||
HANDLER_READ_NEXT 5
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 10
|
||||
# 30 locks (2 table, 8 + 5 subpartitions lock/unlock)
|
||||
FLUSH STATUS;
|
||||
@@ -1114,7 +1114,7 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_FIRST 5
|
||||
HANDLER_READ_NEXT 7
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
HANDLER_WRITE 7
|
||||
# 14 locks (2 table, 5 subpartitions lock/unlock)
|
||||
SHOW CREATE TABLE t1;
|
||||
@@ -1201,7 +1201,7 @@ WHERE t1.a = t3.a AND t3.b = 'subp3'' at line 1
|
||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# Multi table delete without any matching rows
|
||||
FLUSH STATUS;
|
||||
DELETE t1, t2 FROM t1 PARTITION (pNeg), t3, t2 PARTITION (subp3)
|
||||
@@ -1211,7 +1211,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_READ_RND_NEXT 3
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 12 locks (3 in t1, 1 in t3, 2 in t2) x 2 (lock + unlock)
|
||||
# 1 read first (first rnd_next in t2)
|
||||
# 4 read key (1 innodb_get_index in rnd_init in t2 + index read in t2
|
||||
@@ -1231,7 +1231,7 @@ HANDLER_READ_KEY 2
|
||||
HANDLER_READ_NEXT 2
|
||||
HANDLER_READ_RND 4
|
||||
HANDLER_READ_RND_NEXT 16
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 4 delete (2 in t2 + 2 in t3)
|
||||
# 12 locks (3 in t2, 1 in t3, 2 in t1) x 2 (lock + unlock)
|
||||
# 3 read first (1 in t1 + 1 in t3 + 1 in t3, for second row in t1)
|
||||
@@ -1279,7 +1279,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
||||
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_COMMIT 1
|
||||
HANDLER_TMP_WRITE 22
|
||||
HANDLER_TMP_WRITE 23
|
||||
# 6 locks (lock/unlock two subpartitions + table)
|
||||
# Test on non partitioned table
|
||||
SELECT * FROM t3 PARTITION (pNeg);
|
||||
|
||||
@@ -3950,6 +3950,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -3964,6 +3965,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -3978,6 +3980,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 8
|
||||
@@ -3992,6 +3995,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
|
||||
@@ -789,3 +789,5 @@ execute stmt1;
|
||||
1
|
||||
drop prepare stmt1;
|
||||
drop table t1;
|
||||
select ?+1;
|
||||
Got one of the listed errors
|
||||
|
||||
@@ -2114,6 +2114,37 @@ a b
|
||||
1 1
|
||||
drop table t2;
|
||||
#
|
||||
# MDEV-10228: Delete missing rows with OR conditions
|
||||
# (The example uses UPDATE, because UPDATE allows to use index hints
|
||||
# and so it's possible to make an example that works with any storage
|
||||
# engine)
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
key1varchar varchar(14) NOT NULL,
|
||||
key2int int(11) NOT NULL DEFAULT '0',
|
||||
col1 int,
|
||||
PRIMARY KEY (key1varchar,key2int),
|
||||
KEY key1varchar (key1varchar),
|
||||
KEY key2int (key2int)
|
||||
) DEFAULT CHARSET=utf8;
|
||||
insert into t1 values
|
||||
('value1',0, 0),
|
||||
('value1',1, 0),
|
||||
('value1',1000685, 0),
|
||||
('value1',1003560, 0),
|
||||
('value1',1004807, 0);
|
||||
update t1 force index (PRIMARY) set col1=12345
|
||||
where (key1varchar='value1' AND (key2int <=1 OR key2int > 1));
|
||||
# The following must show col1=12345 for all rows:
|
||||
select * from t1;
|
||||
key1varchar key2int col1
|
||||
value1 0 12345
|
||||
value1 1 12345
|
||||
value1 1000685 12345
|
||||
value1 1003560 12345
|
||||
value1 1004807 12345
|
||||
drop table t1;
|
||||
#
|
||||
# BUG#13731380: RANGE OPTIMIZER CALLS RECORDS_IN_RANGE() FOR OPEN RANGE
|
||||
#
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY);
|
||||
@@ -2288,5 +2319,16 @@ Warnings:
|
||||
Warning 1366 Incorrect string value: '\xF0\x9F\x98\x8E' for column 'a' at row 1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-10185: Assertion `tree1->keys[key_no] && tree2->keys[key_no]' failed in
|
||||
# sel_trees_can_be_ored(RANGE_OPT_PARAM*, SEL_TREE*, SEL_TREE*, key_map*)
|
||||
#
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY);
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
SELECT * FROM t1 WHERE pk != 1000 OR pk IN ( 1000, 0, 1, 100, 2 ) OR pk >= 5;
|
||||
pk
|
||||
1
|
||||
2
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
|
||||
@@ -2116,6 +2116,37 @@ a b
|
||||
1 1
|
||||
drop table t2;
|
||||
#
|
||||
# MDEV-10228: Delete missing rows with OR conditions
|
||||
# (The example uses UPDATE, because UPDATE allows to use index hints
|
||||
# and so it's possible to make an example that works with any storage
|
||||
# engine)
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
key1varchar varchar(14) NOT NULL,
|
||||
key2int int(11) NOT NULL DEFAULT '0',
|
||||
col1 int,
|
||||
PRIMARY KEY (key1varchar,key2int),
|
||||
KEY key1varchar (key1varchar),
|
||||
KEY key2int (key2int)
|
||||
) DEFAULT CHARSET=utf8;
|
||||
insert into t1 values
|
||||
('value1',0, 0),
|
||||
('value1',1, 0),
|
||||
('value1',1000685, 0),
|
||||
('value1',1003560, 0),
|
||||
('value1',1004807, 0);
|
||||
update t1 force index (PRIMARY) set col1=12345
|
||||
where (key1varchar='value1' AND (key2int <=1 OR key2int > 1));
|
||||
# The following must show col1=12345 for all rows:
|
||||
select * from t1;
|
||||
key1varchar key2int col1
|
||||
value1 0 12345
|
||||
value1 1 12345
|
||||
value1 1000685 12345
|
||||
value1 1003560 12345
|
||||
value1 1004807 12345
|
||||
drop table t1;
|
||||
#
|
||||
# BUG#13731380: RANGE OPTIMIZER CALLS RECORDS_IN_RANGE() FOR OPEN RANGE
|
||||
#
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY);
|
||||
@@ -2290,6 +2321,17 @@ Warnings:
|
||||
Warning 1366 Incorrect string value: '\xF0\x9F\x98\x8E' for column 'a' at row 1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-10185: Assertion `tree1->keys[key_no] && tree2->keys[key_no]' failed in
|
||||
# sel_trees_can_be_ored(RANGE_OPT_PARAM*, SEL_TREE*, SEL_TREE*, key_map*)
|
||||
#
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY);
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
SELECT * FROM t1 WHERE pk != 1000 OR pk IN ( 1000, 0, 1, 100, 2 ) OR pk >= 5;
|
||||
pk
|
||||
1
|
||||
2
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
set optimizer_switch=@mrr_icp_extra_tmp;
|
||||
|
||||
@@ -1310,6 +1310,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 385
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 377
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -1338,6 +1339,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 59
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -1367,6 +1369,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 59
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
|
||||
@@ -1311,6 +1311,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 385
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 377
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -1339,6 +1340,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 59
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -1368,6 +1370,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 59
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
|
||||
@@ -4351,6 +4351,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 6
|
||||
|
||||
@@ -4362,6 +4362,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 10
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 10
|
||||
Handler_read_rnd_deleted 1
|
||||
Handler_read_rnd_next 6
|
||||
|
||||
@@ -4351,6 +4351,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 6
|
||||
|
||||
@@ -29,6 +29,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -48,6 +49,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -84,6 +86,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -103,6 +106,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 5
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -136,6 +140,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -155,6 +160,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 1
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -192,6 +198,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -211,6 +218,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -242,6 +250,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -261,6 +270,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 1
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -290,6 +300,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 1
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -309,6 +320,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 1
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -341,6 +353,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 7
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 4
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -365,6 +378,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 7
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 8
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -403,6 +417,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 4
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -422,6 +437,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 4
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -458,6 +474,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -477,6 +494,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 5
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -522,6 +540,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -547,6 +566,7 @@ Handler_read_key 0
|
||||
Handler_read_last 1
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 4
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -566,6 +586,7 @@ Handler_read_key 0
|
||||
Handler_read_last 1
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 4
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -603,6 +624,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -622,6 +644,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 5
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -663,6 +686,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -682,6 +706,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 5
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -720,6 +745,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -739,6 +765,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 1
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -776,6 +803,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -795,6 +823,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 5
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -826,6 +855,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -845,6 +875,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 1
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -875,6 +906,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 1
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -894,6 +926,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 1
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -927,6 +960,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 7
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 4
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -951,6 +985,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 7
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 8
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -993,6 +1028,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 4
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -1012,6 +1048,7 @@ Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 4
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 5
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -1053,6 +1090,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -1072,6 +1110,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 5
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 17
|
||||
@@ -1111,6 +1150,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 4
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -1136,6 +1176,7 @@ Handler_read_key 0
|
||||
Handler_read_last 1
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 4
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -1155,6 +1196,7 @@ Handler_read_key 0
|
||||
Handler_read_last 1
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 4
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 5
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
|
||||
@@ -320,3 +320,23 @@ c2
|
||||
DROP TRIGGER t1_ai;
|
||||
DROP TABLE t1, t2;
|
||||
End of 5.0 tests
|
||||
#
|
||||
# Bug#21142859: FUNCTION UPDATING A VIEW FAILS TO FIND TABLE THAT ACTUALLY EXISTS
|
||||
#
|
||||
CREATE TABLE t1 SELECT 1 AS fld1, 'A' AS fld2;
|
||||
CREATE TABLE t2 (fld3 INT, fld4 CHAR(1));
|
||||
CREATE VIEW v1 AS SELECT * FROM t1;
|
||||
CREATE TRIGGER t1_au AFTER UPDATE ON t1
|
||||
FOR EACH ROW INSERT INTO t2 VALUES (new.fld1, new.fld2);
|
||||
CREATE FUNCTION f1() RETURNS INT
|
||||
BEGIN
|
||||
UPDATE v1 SET fld2='B' WHERE fld1=1;
|
||||
RETURN row_count();
|
||||
END !
|
||||
# Without the patch, an error was getting reported.
|
||||
SELECT f1();
|
||||
f1()
|
||||
1
|
||||
DROP FUNCTION f1;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
@@ -7716,6 +7716,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -7727,6 +7728,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 4097
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
||||
have_ssl
|
||||
1
|
||||
SHOW STATUS LIKE 'Ssl_server_not_before';
|
||||
Variable_name Value
|
||||
Ssl_server_not_before Apr 25 14:55:05 2015 GMT
|
||||
@@ -2163,12 +2163,17 @@ Privat (Private Nutzung) Mobilfunk
|
||||
Warnings:
|
||||
Warning 1052 Column 'kundentyp' in group statement is ambiguous
|
||||
drop table t1;
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
||||
have_ssl
|
||||
1
|
||||
select aes_decrypt('MySQL','adf');
|
||||
aes_decrypt('MySQL','adf')
|
||||
NULL
|
||||
select 'still connected?';
|
||||
still connected?
|
||||
still connected?
|
||||
create user mysqltest_1@localhost;
|
||||
grant usage on mysqltest.* to mysqltest_1@localhost require cipher "EDH-RSA-DES-CBC3-SHA";
|
||||
Variable_name Value
|
||||
Ssl_cipher EDH-RSA-DES-CBC3-SHA
|
||||
drop user mysqltest_1@localhost;
|
||||
|
||||
24
mysql-test/r/ssl_ca.result
Normal file
24
mysql-test/r/ssl_ca.result
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# Bug#21920657: SSL-CA FAILS SILENTLY IF THE PATH CANNOT BE FOUND
|
||||
#
|
||||
# try to connect with wrong '--ssl-ca' path : should fail
|
||||
ERROR 2026 (HY000): SSL connection error: SSL_CTX_set_default_verify_paths failed
|
||||
# try to connect with correct '--ssl-ca' path : should connect
|
||||
have_ssl
|
||||
1
|
||||
#
|
||||
# Bug#21920678: SSL-CA DOES NOT ACCEPT ~USER TILDE HOME DIRECTORY
|
||||
# PATH SUBSTITUTION
|
||||
#
|
||||
# try to connect with '--ssl-ca' option using tilde home directoy
|
||||
# path substitution : should connect
|
||||
have_ssl
|
||||
1
|
||||
# try to connect with '--ssl-key' option using tilde home directoy
|
||||
# path substitution : should connect
|
||||
have_ssl
|
||||
1
|
||||
# try to connect with '--ssl-cert' option using tilde home directoy
|
||||
# path substitution : should connect
|
||||
have_ssl
|
||||
1
|
||||
@@ -1,6 +1,6 @@
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
||||
have_ssl
|
||||
1
|
||||
SHOW STATUS LIKE 'Compression';
|
||||
Variable_name Value
|
||||
Compression ON
|
||||
@@ -2160,9 +2160,9 @@ Privat (Private Nutzung) Mobilfunk
|
||||
Warnings:
|
||||
Warning 1052 Column 'kundentyp' in group statement is ambiguous
|
||||
drop table t1;
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
||||
have_ssl
|
||||
1
|
||||
SHOW STATUS LIKE 'Compression';
|
||||
Variable_name Value
|
||||
Compression ON
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# connect with read timeout so SLEEP() should timeout
|
||||
# Check ssl turned on
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
||||
have_ssl
|
||||
1
|
||||
SELECT SLEEP(600);
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
|
||||
@@ -288,6 +288,7 @@ Handler_read_key 4
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 7
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 23
|
||||
@@ -305,7 +306,7 @@ Created_tmp_files 0
|
||||
Created_tmp_tables 2
|
||||
Handler_tmp_update 2
|
||||
Handler_tmp_write 7
|
||||
Rows_tmp_read 42
|
||||
Rows_tmp_read 43
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (i int(11) DEFAULT NULL, KEY i (i) ) ENGINE=MyISAM;
|
||||
insert into t1 values (1),(2),(3),(4),(5);
|
||||
@@ -330,6 +331,7 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 2
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 1
|
||||
Handler_read_rnd_next 2
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user