Merge branch '10.1' into 10.2
This commit is contained in:
commit
932646b1ff
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -9,6 +9,7 @@
|
||||
*.cpp text
|
||||
*.h text
|
||||
*.test text
|
||||
*.java text
|
||||
|
||||
# These files should be checked out as is
|
||||
*.result -text -whitespace
|
||||
@ -23,9 +24,11 @@ pcre/testdata/greppatN4 -text
|
||||
*.frm binary
|
||||
*.MYD binary
|
||||
*.MYI binary
|
||||
*.class binary
|
||||
|
||||
*.c diff=cpp
|
||||
*.h diff=cpp
|
||||
*.cc diff=cpp
|
||||
*.ic diff=cpp
|
||||
*.cpp diff=cpp
|
||||
*.java diff=cpp
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -244,6 +244,8 @@ storage/mroonga/mysql-test/mroonga/storage/r/variable_version.result
|
||||
*.exp
|
||||
*.dep
|
||||
*.idb
|
||||
*.res
|
||||
*.tlog
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2001, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2016, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,7 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2013, Monty Program Ab.
|
||||
Copyright (c) 2013, 2014, SkySQL Ab
|
||||
Copyright (c) 2009, 2016, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -96,9 +95,16 @@ extern "C" {
|
||||
#endif
|
||||
}
|
||||
|
||||
#if !defined(HAVE_VIDATTR)
|
||||
#undef vidattr
|
||||
#define vidattr(A) {} // Can't get this to work
|
||||
#ifdef HAVE_VIDATTR
|
||||
static int have_curses= 0;
|
||||
static void my_vidattr(chtype attrs)
|
||||
{
|
||||
if (have_curses)
|
||||
vidattr(attrs);
|
||||
}
|
||||
#else
|
||||
#undef HAVE_SETUPTERM
|
||||
#define my_vidattr(A) {} // Can't get this to work
|
||||
#endif
|
||||
|
||||
#ifdef FN_NO_CASE_SENSE
|
||||
@ -4734,9 +4740,9 @@ com_status(String *buffer __attribute__((unused)),
|
||||
|
||||
if (skip_updates)
|
||||
{
|
||||
vidattr(A_BOLD);
|
||||
my_vidattr(A_BOLD);
|
||||
tee_fprintf(stdout, "\nAll updates ignored to this database\n");
|
||||
vidattr(A_NORMAL);
|
||||
my_vidattr(A_NORMAL);
|
||||
}
|
||||
#ifdef USE_POPEN
|
||||
tee_fprintf(stdout, "Current pager:\t\t%s\n", pager);
|
||||
@ -4804,9 +4810,9 @@ com_status(String *buffer __attribute__((unused)),
|
||||
}
|
||||
if (safe_updates)
|
||||
{
|
||||
vidattr(A_BOLD);
|
||||
my_vidattr(A_BOLD);
|
||||
tee_fprintf(stdout, "\nNote that you are running in safe_update_mode:\n");
|
||||
vidattr(A_NORMAL);
|
||||
my_vidattr(A_NORMAL);
|
||||
tee_fprintf(stdout, "\
|
||||
UPDATEs and DELETEs that don't use a key in the WHERE clause are not allowed.\n\
|
||||
(One can force an UPDATE/DELETE by adding LIMIT # at the end of the command.)\n\
|
||||
@ -4899,10 +4905,11 @@ put_info(const char *str,INFO_TYPE info_type, uint error, const char *sqlstate)
|
||||
{
|
||||
if (!inited)
|
||||
{
|
||||
inited=1;
|
||||
#ifdef HAVE_SETUPTERM
|
||||
(void) setupterm((char *)0, 1, (int *) 0);
|
||||
int errret;
|
||||
have_curses= setupterm((char *)0, 1, &errret) != ERR;
|
||||
#endif
|
||||
inited=1;
|
||||
}
|
||||
if (info_type == INFO_ERROR)
|
||||
{
|
||||
@ -4914,7 +4921,7 @@ put_info(const char *str,INFO_TYPE info_type, uint error, const char *sqlstate)
|
||||
putchar('\a'); /* This should make a bell */
|
||||
#endif
|
||||
}
|
||||
vidattr(A_STANDOUT);
|
||||
my_vidattr(A_STANDOUT);
|
||||
if (error)
|
||||
{
|
||||
if (sqlstate)
|
||||
@ -4933,9 +4940,9 @@ put_info(const char *str,INFO_TYPE info_type, uint error, const char *sqlstate)
|
||||
tee_fputs(": ", file);
|
||||
}
|
||||
else
|
||||
vidattr(A_BOLD);
|
||||
my_vidattr(A_BOLD);
|
||||
(void) tee_puts(str, file);
|
||||
vidattr(A_NORMAL);
|
||||
my_vidattr(A_NORMAL);
|
||||
}
|
||||
if (unbuffered)
|
||||
fflush(file);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2006, 2013, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2015, MariaDB
|
||||
Copyright (c) 2010, 2016, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2015, MariaDB
|
||||
Copyright (c) 2010, 2016, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
@ -34,6 +34,7 @@
|
||||
#define TABLE TABLE_CLIENT
|
||||
#include "client_priv.h"
|
||||
#include <my_time.h>
|
||||
#include <sslopt-vars.h>
|
||||
/* That one is necessary for defines of OPTION_NO_FOREIGN_KEY_CHECKS etc */
|
||||
#include "sql_priv.h"
|
||||
#include "log_event.h"
|
||||
@ -1403,6 +1404,7 @@ static struct my_option my_options[] =
|
||||
{"socket", 'S', "The socket file to use for connection.",
|
||||
&sock, &sock, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0,
|
||||
0, 0},
|
||||
#include <sslopt-longopts.h>
|
||||
{"start-datetime", OPT_START_DATETIME,
|
||||
"Start reading the binlog at first event having a datetime equal or "
|
||||
"posterior to the argument; the argument must be a date and time "
|
||||
@ -1621,6 +1623,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||
break;
|
||||
#endif
|
||||
#include <sslopt-case.h>
|
||||
case 'd':
|
||||
one_database = 1;
|
||||
break;
|
||||
@ -1773,6 +1776,18 @@ static Exit_status safe_connect()
|
||||
return ERROR_STOP;
|
||||
}
|
||||
|
||||
#ifdef HAVE_OPENSSL
|
||||
if (opt_use_ssl)
|
||||
{
|
||||
mysql_ssl_set(mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca,
|
||||
opt_ssl_capath, opt_ssl_cipher);
|
||||
mysql_options(mysql, MYSQL_OPT_SSL_CRL, opt_ssl_crl);
|
||||
mysql_options(mysql, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath);
|
||||
}
|
||||
mysql_options(mysql,MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
|
||||
(char*)&opt_ssl_verify_server_cert);
|
||||
#endif /*HAVE_OPENSSL*/
|
||||
|
||||
if (opt_plugindir && *opt_plugindir)
|
||||
mysql_options(mysql, MYSQL_PLUGIN_DIR, opt_plugindir);
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2001, 2013, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2015, MariaDB
|
||||
Copyright (c) 2010, 2016, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -246,7 +246,7 @@ 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;
|
||||
|
||||
@ -594,10 +594,10 @@ static int process_selected_tables(char *db, char **table_names, int tables)
|
||||
} /* 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));
|
||||
}
|
||||
|
||||
|
||||
@ -664,7 +664,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;
|
||||
@ -769,7 +769,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 +786,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");
|
||||
@ -806,7 +809,7 @@ static int rebuild_table(char *name)
|
||||
ptr= strxmov(ptr, " 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));
|
||||
@ -871,7 +874,7 @@ static int handle_request_for_tables(char *tables, size_t length, my_bool view)
|
||||
{
|
||||
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 +927,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)
|
||||
{
|
||||
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 +948,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);
|
||||
@ -1209,7 +1214,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");
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2015, Monty Program Ab.
|
||||
Copyright (c) 2010, 2016, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -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);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||
Copyright (c) 2011, 2015, MariaDB
|
||||
Copyright (c) 2011, 2016, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2015, MariaDB
|
||||
Copyright (c) 2010, 2016, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -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;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2015, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2015, MariaDB
|
||||
Copyright (c) 2010, 2016, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2013, Monty Program Ab.
|
||||
Copyright (c) 2009, 2016, Monty Program Ab.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -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)
|
||||
|
@ -209,11 +209,16 @@ MACRO(MYSQL_ADD_PLUGIN)
|
||||
IF(ARG_COMPONENT)
|
||||
IF(CPACK_COMPONENTS_ALL AND
|
||||
NOT CPACK_COMPONENTS_ALL MATCHES ${ARG_COMPONENT})
|
||||
|
||||
IF (ARG_STORAGE_ENGINE)
|
||||
SET(ver " = %{version}-%{release}")
|
||||
ELSE()
|
||||
SET(ver "")
|
||||
ENDIF()
|
||||
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} ${ARG_COMPONENT})
|
||||
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} PARENT_SCOPE)
|
||||
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} PARENT_SCOPE)
|
||||
|
||||
IF (NOT ARG_CLIENT)
|
||||
SET(CPACK_RPM_${ARG_COMPONENT}_PACKAGE_REQUIRES "MariaDB" PARENT_SCOPE)
|
||||
SET(CPACK_RPM_${ARG_COMPONENT}_PACKAGE_REQUIRES "MariaDB${ver}" PARENT_SCOPE)
|
||||
ENDIF()
|
||||
# workarounds for cmake issues #13248 and #12864:
|
||||
SET(CPACK_RPM_${ARG_COMPONENT}_PACKAGE_PROVIDES "cmake_bug_13248" 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")
|
||||
|
7
debian/control
vendored
7
debian/control
vendored
@ -316,7 +316,7 @@ Description: MariaDB database regression test suite
|
||||
|
||||
Package: mariadb-server-10.2
|
||||
Architecture: any
|
||||
Suggests: mailx, mariadb-test, netcat-openbsd, socat, tinyca
|
||||
Suggests: mailx, mariadb-test, netcat-openbsd, tinyca
|
||||
Recommends: libhtml-template-perl
|
||||
Pre-Depends: mariadb-common, adduser (>= 3.40), debconf
|
||||
Depends: bsdutils,
|
||||
@ -335,6 +335,7 @@ Depends: bsdutils,
|
||||
perl (>= 5.6),
|
||||
psmisc,
|
||||
rsync,
|
||||
socat,
|
||||
tar,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
@ -415,10 +416,10 @@ Description: MariaDB database regression test suite (metapackage for the latest
|
||||
|
||||
Package: mariadb-connect-engine-10.2
|
||||
Architecture: any
|
||||
Depends: libxml2, mariadb-server-10.2, unixODBC
|
||||
Depends: libxml2, mariadb-server-10.2, unixodbc
|
||||
Build-Depends: libxml2-dev,
|
||||
mariadb-server-10.2,
|
||||
unixODBC-dev,
|
||||
unixodbc-dev,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Description: Connect storage engine for MariaDB
|
||||
|
2
debian/mariadb-test-10.2.dirs
vendored
2
debian/mariadb-test-10.2.dirs
vendored
@ -44,8 +44,6 @@ usr/share/mysql/mysql-test/suite/jp/r
|
||||
usr/share/mysql/mysql-test/suite/jp/include
|
||||
usr/share/mysql/mysql-test/suite/jp/std_data
|
||||
usr/share/mysql/mysql-test/suite/maria
|
||||
usr/share/mysql/mysql-test/suite/maria/t
|
||||
usr/share/mysql/mysql-test/suite/maria/r
|
||||
usr/share/mysql/mysql-test/suite/funcs_2
|
||||
usr/share/mysql/mysql-test/suite/funcs_2/lib
|
||||
usr/share/mysql/mysql-test/suite/funcs_2/t
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -12,6 +12,12 @@ before calling SSL_new();
|
||||
|
||||
*** end Note ***
|
||||
|
||||
yaSSL Release notes, version 2.3.9b (2/03/2016)
|
||||
This release of yaSSL fixes the OpenSSL compatibility function
|
||||
X509_NAME_get_index_by_NID() to use the actual index of the common name
|
||||
instead of searching on the format prefix. Thanks for the report from
|
||||
yashwant.sahu@oracle.com . Anyone using this function should update.
|
||||
|
||||
yaSSL Release notes, version 2.3.9 (12/01/2015)
|
||||
This release of yaSSL fixes two client side Diffie-Hellman problems.
|
||||
yaSSL was only handling the cases of zero or one leading zeros for the key
|
||||
|
@ -34,7 +34,7 @@
|
||||
#include "rsa.h"
|
||||
|
||||
|
||||
#define YASSL_VERSION "2.3.9"
|
||||
#define YASSL_VERSION "2.3.9b"
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
|
@ -191,14 +191,18 @@ private:
|
||||
class X509_NAME {
|
||||
char* name_;
|
||||
size_t sz_;
|
||||
int cnPosition_; // start of common name, -1 is none
|
||||
int cnLen_; // length of above
|
||||
ASN1_STRING entry_;
|
||||
public:
|
||||
X509_NAME(const char*, size_t sz);
|
||||
X509_NAME(const char*, size_t sz, int pos, int len);
|
||||
~X509_NAME();
|
||||
|
||||
const char* GetName() const;
|
||||
ASN1_STRING* GetEntry(int i);
|
||||
size_t GetLength() const;
|
||||
int GetCnPosition() const { return cnPosition_; }
|
||||
int GetCnLength() const { return cnLen_; }
|
||||
private:
|
||||
X509_NAME(const X509_NAME&); // hide copy
|
||||
X509_NAME& operator=(const X509_NAME&); // and assign
|
||||
@ -226,7 +230,7 @@ class X509 {
|
||||
StringHolder afterDate_; // not valid after
|
||||
public:
|
||||
X509(const char* i, size_t, const char* s, size_t,
|
||||
ASN1_STRING *b, ASN1_STRING *a);
|
||||
ASN1_STRING *b, ASN1_STRING *a, int, int, int, int);
|
||||
~X509() {}
|
||||
|
||||
X509_NAME* GetIssuer();
|
||||
|
@ -304,7 +304,10 @@ int CertManager::Validate()
|
||||
afterDate.type= cert.GetAfterDateType();
|
||||
afterDate.length= strlen((char *) afterDate.data) + 1;
|
||||
peerX509_ = NEW_YS X509(cert.GetIssuer(), iSz, cert.GetCommonName(),
|
||||
sSz, &beforeDate, &afterDate);
|
||||
sSz, &beforeDate, &afterDate,
|
||||
cert.GetIssuerCnStart(), cert.GetIssuerCnLength(),
|
||||
cert.GetSubjectCnStart(), cert.GetSubjectCnLength()
|
||||
);
|
||||
|
||||
if (err == TaoCrypt::SIG_OTHER_E && verifyCallback_) {
|
||||
X509_STORE_CTX store;
|
||||
@ -350,7 +353,9 @@ int CertManager::SetPrivateKey(const x509& key)
|
||||
afterDate.type= cd.GetAfterDateType();
|
||||
afterDate.length= strlen((char *) afterDate.data) + 1;
|
||||
selfX509_ = NEW_YS X509(cd.GetIssuer(), iSz, cd.GetCommonName(),
|
||||
sSz, &beforeDate, &afterDate);
|
||||
sSz, &beforeDate, &afterDate,
|
||||
cd.GetIssuerCnStart(), cd.GetIssuerCnLength(),
|
||||
cd.GetSubjectCnStart(), cd.GetSubjectCnLength());
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -367,7 +372,9 @@ void CertManager::setPeerX509(X509* x)
|
||||
ASN1_STRING* after = x->GetAfter();
|
||||
|
||||
peerX509_ = NEW_YS X509(issuer->GetName(), issuer->GetLength(),
|
||||
subject->GetName(), subject->GetLength(), before, after);
|
||||
subject->GetName(), subject->GetLength(), before, after,
|
||||
issuer->GetCnPosition(), issuer->GetCnLength(),
|
||||
subject->GetCnPosition(), subject->GetCnLength());
|
||||
}
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -1351,15 +1351,13 @@ int ASN1_STRING_type(ASN1_STRING *x)
|
||||
int X509_NAME_get_index_by_NID(X509_NAME* name,int nid, int lastpos)
|
||||
{
|
||||
int idx = -1; // not found
|
||||
const char* start = &name->GetName()[lastpos + 1];
|
||||
int cnPos = -1;
|
||||
|
||||
switch (nid) {
|
||||
case NID_commonName:
|
||||
const char* found = strstr(start, "/CN=");
|
||||
if (found) {
|
||||
found += 4; // advance to str
|
||||
idx = found - start + lastpos + 1;
|
||||
}
|
||||
cnPos = name->GetCnPosition();
|
||||
if (lastpos < cnPos)
|
||||
idx = cnPos;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1471,10 +1469,6 @@ int SSL_peek(SSL* ssl, void* buffer, int sz)
|
||||
|
||||
int SSL_pending(SSL* ssl)
|
||||
{
|
||||
// Just in case there's pending data that hasn't been processed yet...
|
||||
char c;
|
||||
SSL_peek(ssl, &c, 1);
|
||||
|
||||
return ssl->bufferedData();
|
||||
}
|
||||
|
||||
|
@ -1554,8 +1554,9 @@ void SSL_SESSION::CopyX509(X509* x)
|
||||
ASN1_TIME* after = x->GetAfter();
|
||||
|
||||
peerX509_ = NEW_YS X509(issuer->GetName(), issuer->GetLength(),
|
||||
subject->GetName(), subject->GetLength(),
|
||||
before, after);
|
||||
subject->GetName(), subject->GetLength(), before, after,
|
||||
issuer->GetCnPosition(), issuer->GetCnLength(),
|
||||
subject->GetCnPosition(), subject->GetCnLength());
|
||||
}
|
||||
|
||||
|
||||
@ -2477,8 +2478,8 @@ void Security::set_resuming(bool b)
|
||||
}
|
||||
|
||||
|
||||
X509_NAME::X509_NAME(const char* n, size_t sz)
|
||||
: name_(0), sz_(sz)
|
||||
X509_NAME::X509_NAME(const char* n, size_t sz, int pos, int len)
|
||||
: name_(0), sz_(sz), cnPosition_(pos), cnLen_(len)
|
||||
{
|
||||
if (sz) {
|
||||
name_ = NEW_YS char[sz];
|
||||
@ -2508,8 +2509,10 @@ size_t X509_NAME::GetLength() const
|
||||
|
||||
|
||||
X509::X509(const char* i, size_t iSz, const char* s, size_t sSz,
|
||||
ASN1_STRING *b, ASN1_STRING *a)
|
||||
: issuer_(i, iSz), subject_(s, sSz),
|
||||
ASN1_STRING *b, ASN1_STRING *a,
|
||||
int issPos, int issLen,
|
||||
int subPos, int subLen)
|
||||
: issuer_(i, iSz, issPos, issLen), subject_(s, sSz, subPos, subLen),
|
||||
beforeDate_((char *) b->data, b->length, b->type),
|
||||
afterDate_((char *) a->data, a->length, a->type)
|
||||
{}
|
||||
@ -2544,17 +2547,19 @@ ASN1_STRING* X509_NAME::GetEntry(int i)
|
||||
if (i < 0 || i >= int(sz_))
|
||||
return 0;
|
||||
|
||||
if (i != cnPosition_ || cnLen_ <= 0) // only entry currently supported
|
||||
return 0;
|
||||
|
||||
if (cnLen_ > int(sz_-i)) // make sure there's room in read buffer
|
||||
return 0;
|
||||
|
||||
if (entry_.data)
|
||||
ysArrayDelete(entry_.data);
|
||||
entry_.data = NEW_YS byte[sz_]; // max size;
|
||||
entry_.data = NEW_YS byte[cnLen_+1]; // max size;
|
||||
|
||||
memcpy(entry_.data, &name_[i], sz_ - i);
|
||||
if (entry_.data[sz_ -i - 1]) {
|
||||
entry_.data[sz_ - i] = 0;
|
||||
entry_.length = int(sz_) - i;
|
||||
}
|
||||
else
|
||||
entry_.length = int(sz_) - i - 1;
|
||||
memcpy(entry_.data, &name_[i], cnLen_);
|
||||
entry_.data[cnLen_] = 0;
|
||||
entry_.length = cnLen_;
|
||||
entry_.type = 0;
|
||||
|
||||
return &entry_;
|
||||
|
@ -285,6 +285,10 @@ public:
|
||||
byte GetBeforeDateType() const { return beforeDateType_; }
|
||||
const char* GetAfterDate() const { return afterDate_; }
|
||||
byte GetAfterDateType() const { return afterDateType_; }
|
||||
int GetSubjectCnStart() const { return subCnPos_; }
|
||||
int GetIssuerCnStart() const { return issCnPos_; }
|
||||
int GetSubjectCnLength() const { return subCnLen_; }
|
||||
int GetIssuerCnLength() const { return issCnLen_; }
|
||||
|
||||
void DecodeToKey();
|
||||
private:
|
||||
@ -294,6 +298,10 @@ private:
|
||||
word32 sigLength_; // length of signature
|
||||
word32 signatureOID_; // sum of algorithm object id
|
||||
word32 keyOID_; // sum of key algo object id
|
||||
int subCnPos_; // subject common name start, -1 is none
|
||||
int subCnLen_; // length of above
|
||||
int issCnPos_; // issuer common name start, -1 is none
|
||||
int issCnLen_; // length of above
|
||||
byte subjectHash_[SHA_SIZE]; // hash of all Names
|
||||
byte issuerHash_[SHA_SIZE]; // hash of all Names
|
||||
byte* signature_;
|
||||
|
@ -482,8 +482,9 @@ void DH_Decoder::Decode(DH& key)
|
||||
|
||||
CertDecoder::CertDecoder(Source& s, bool decode, SignerList* signers,
|
||||
bool noVerify, CertType ct)
|
||||
: BER_Decoder(s), certBegin_(0), sigIndex_(0), sigLength_(0),
|
||||
signature_(0), verify_(!noVerify)
|
||||
: BER_Decoder(s), certBegin_(0), sigIndex_(0), sigLength_(0), subCnPos_(-1),
|
||||
subCnLen_(0), issCnPos_(-1), issCnLen_(0), signature_(0),
|
||||
verify_(!noVerify)
|
||||
{
|
||||
issuer_[0] = 0;
|
||||
subject_[0] = 0;
|
||||
@ -804,6 +805,13 @@ void CertDecoder::GetName(NameType nt)
|
||||
case COMMON_NAME:
|
||||
if (!(ptr = AddTag(ptr, buf_end, "/CN=", 4, strLen)))
|
||||
return;
|
||||
if (nt == ISSUER) {
|
||||
issCnPos_ = (int)(ptr - strLen - issuer_);
|
||||
issCnLen_ = (int)strLen;
|
||||
} else {
|
||||
subCnPos_ = (int)(ptr - strLen - subject_);
|
||||
subCnLen_ = (int)strLen;
|
||||
}
|
||||
break;
|
||||
case SUR_NAME:
|
||||
if (!(ptr = AddTag(ptr, buf_end, "/SN=", 4, strLen)))
|
||||
|
@ -470,10 +470,28 @@ inline void showPeer(SSL* ssl)
|
||||
char* issuer = X509_NAME_oneline(X509_get_issuer_name(peer), 0, 0);
|
||||
char* subject = X509_NAME_oneline(X509_get_subject_name(peer), 0, 0);
|
||||
|
||||
printf("peer's cert info:\n issuer : %s\n subject: %s\n", issuer,
|
||||
subject);
|
||||
X509_NAME_ENTRY* se = NULL;
|
||||
ASN1_STRING* sd = NULL;
|
||||
char* subCN = NULL;
|
||||
|
||||
X509_NAME* sub = X509_get_subject_name(peer);
|
||||
int lastpos = -1;
|
||||
if (sub)
|
||||
lastpos = X509_NAME_get_index_by_NID(sub, NID_commonName, lastpos);
|
||||
if (lastpos >= 0) {
|
||||
se = X509_NAME_get_entry(sub, lastpos);
|
||||
if (se)
|
||||
sd = X509_NAME_ENTRY_get_data(se);
|
||||
if (sd)
|
||||
subCN = (char*)ASN1_STRING_data(sd);
|
||||
}
|
||||
|
||||
printf("peer's cert info:\n issuer : %s\n subject: %s\n"
|
||||
" subject cn: %s\n", issuer, subject, subCN);
|
||||
|
||||
free(subject);
|
||||
free(issuer);
|
||||
|
||||
}
|
||||
else
|
||||
printf("peer has no cert!\n");
|
||||
|
@ -76,3 +76,9 @@ INSTALL(DIRECTORY . DESTINATION ${INSTALL_INCLUDEDIR}/private COMPONENT Developm
|
||||
PATTERN CMakeFiles EXCLUDE
|
||||
PATTERN mysql EXCLUDE
|
||||
REGEX "\\./(${EXCL_RE}$)" EXCLUDE)
|
||||
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/. DESTINATION ${INSTALL_INCLUDEDIR}/private COMPONENT Development
|
||||
FILES_MATCHING PATTERN "*.h"
|
||||
PATTERN CMakeFiles EXCLUDE
|
||||
PATTERN mysql EXCLUDE
|
||||
REGEX "\\./(${EXCL_RE}$)" EXCLUDE)
|
||||
|
@ -101,7 +101,7 @@ extern MY_UNICASE_INFO my_unicase_unicode520;
|
||||
*/
|
||||
#define MY_UCA_MAX_WEIGHT_SIZE (8+1) /* Including 0 terminator */
|
||||
#define MY_UCA_CONTRACTION_MAX_WEIGHT_SIZE (2*8+1) /* Including 0 terminator */
|
||||
#define MY_UCA_WEIGHT_LEVELS 1
|
||||
#define MY_UCA_WEIGHT_LEVELS 2
|
||||
|
||||
typedef struct my_contraction_t
|
||||
{
|
||||
@ -131,6 +131,7 @@ typedef struct my_uca_level_info_st
|
||||
uchar *lengths;
|
||||
uint16 **weights;
|
||||
MY_CONTRACTIONS contractions;
|
||||
uint levelno;
|
||||
} MY_UCA_WEIGHT_LEVEL;
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -23,6 +23,10 @@
|
||||
|
||||
#include "plugin.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define MYSQL_AUDIT_CLASS_MASK_SIZE 1
|
||||
|
||||
#define MYSQL_AUDIT_INTERFACE_VERSION 0x0302
|
||||
@ -175,4 +179,8 @@ struct st_mysql_audit
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -31,6 +31,10 @@
|
||||
|
||||
#include <mysql/plugin_auth_common.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* defines for MYSQL_SERVER_AUTH_INFO.password_used */
|
||||
|
||||
#define PASSWORD_USED_NO 0
|
||||
@ -122,5 +126,10 @@ struct st_mysql_auth
|
||||
*/
|
||||
int (*authenticate_user)(MYSQL_PLUGIN_VIO *vio, MYSQL_SERVER_AUTH_INFO *info);
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -27,6 +27,10 @@
|
||||
|
||||
#include <mysql/plugin.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define MariaDB_ENCRYPTION_INTERFACE_VERSION 0x0300
|
||||
|
||||
/**
|
||||
@ -114,5 +118,9 @@ struct st_mariadb_encryption
|
||||
*/
|
||||
unsigned int (*encrypted_length)(unsigned int slen, unsigned int key_id, unsigned int key_version);
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -18,6 +18,10 @@
|
||||
#define _my_plugin_ftparser_h
|
||||
#include "plugin.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*************************************************************************
|
||||
API for Full-text parser plugin. (MYSQL_FTPARSER_PLUGIN)
|
||||
*/
|
||||
@ -208,5 +212,9 @@ struct st_mysql_ftparser
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -26,6 +26,10 @@
|
||||
|
||||
#include <mysql/plugin.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define MariaDB_PASSWORD_VALIDATION_INTERFACE_VERSION 0x0100
|
||||
|
||||
/**
|
||||
@ -41,5 +45,10 @@ struct st_mariadb_password_validation
|
||||
int (*validate_password)(MYSQL_LEX_STRING *username,
|
||||
MYSQL_LEX_STRING *password);
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -274,6 +274,25 @@ SET(CLIENT_API_FUNCTIONS
|
||||
)
|
||||
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
IF (NOT DISABLE_LIBMYSQLCLIENT_SYMBOL_VERSIONING)
|
||||
|
||||
INCLUDE (CheckCSourceCompiles)
|
||||
FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.ld"
|
||||
"VERSION {\nlibmysqlclient_18 {\nglobal: *;\n};\n}\n")
|
||||
SET(CMAKE_REQUIRED_LIBRARIES "-Wl,src.ld")
|
||||
CHECK_C_SOURCE_COMPILES("int main() { return 0; }"
|
||||
SUPPORTS_VERSION_IN_LINK_SCRIPT)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES)
|
||||
|
||||
IF (NOT SUPPORTS_VERSION_IN_LINK_SCRIPT)
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=16895
|
||||
MESSAGE(SEND_ERROR "Your current linker does not support VERSION "
|
||||
"command in linker scripts like a GNU ld or any compatible linker "
|
||||
"should. Perhaps you're using gold? Either switch to GNU ld compatible "
|
||||
"linker or run cmake with -DDISABLE_LIBMYSQLCLIENT_SYMBOL_VERSIONING=TRUE "
|
||||
"to be able to complete the build")
|
||||
ENDIF (NOT SUPPORTS_VERSION_IN_LINK_SCRIPT)
|
||||
|
||||
# When building RPM, or DEB package on Debian, use ELF symbol versioning
|
||||
# for compatibility with distribution packages, so client shared library can
|
||||
# painlessly replace the one supplied by the distribution.
|
||||
@ -358,14 +377,26 @@ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
make_scrambled_password_323
|
||||
)
|
||||
|
||||
# Linker script to version symbols in Fedora- and Debian- compatible way, MDEV-5529
|
||||
SET(VERSION_SCRIPT_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/libmysql_versions.ld.in)
|
||||
|
||||
# Generate version script.
|
||||
# Create semicolon separated lists of functions to export from
|
||||
# Since RPM packages use separate versioning for 5.1 API
|
||||
# and 5.5 API (libmysqlclient_16 vs libmysqlclient_18),
|
||||
# we need 2 lists.
|
||||
SET (VERSION_HEADER
|
||||
"VERSION {
|
||||
libmysqlclient_18 {
|
||||
global:")
|
||||
SET (VERSION_FOOTER
|
||||
" local:
|
||||
*;
|
||||
};
|
||||
|
||||
libmysqlclient_16 {
|
||||
/* empty here. aliases are added above */
|
||||
};
|
||||
}
|
||||
")
|
||||
|
||||
SET (CLIENT_API_5_1_LIST)
|
||||
SET (CLIENT_API_5_1_ALIASES)
|
||||
FOREACH (f ${CLIENT_API_FUNCTIONS_5_1} ${CLIENT_API_5_1_EXTRA})
|
||||
@ -378,6 +409,13 @@ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
SET(CLIENT_API_5_5_LIST "${CLIENT_API_5_5_LIST}\t${f};\n")
|
||||
ENDFOREACH()
|
||||
|
||||
ELSE (NOT DISABLE_LIBMYSQLCLIENT_SYMBOL_VERSIONING)
|
||||
SET (CLIENT_API_5_1_ALIASES "/* Versioning disabled per user request. MDEV-5982 */")
|
||||
ENDIF (NOT DISABLE_LIBMYSQLCLIENT_SYMBOL_VERSIONING)
|
||||
|
||||
# Linker script to version symbols in Fedora- and Debian- compatible way, MDEV-5529
|
||||
SET(VERSION_SCRIPT_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/libmysql_versions.ld.in)
|
||||
|
||||
CONFIGURE_FILE(
|
||||
${VERSION_SCRIPT_TEMPLATE}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libmysql_versions.ld
|
||||
@ -386,7 +424,7 @@ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
SET(VERSION_SCRIPT_LINK_FLAGS
|
||||
"-Wl,${CMAKE_CURRENT_BINARY_DIR}/libmysql_versions.ld")
|
||||
|
||||
ENDIF()
|
||||
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
|
||||
|
||||
SET(CLIENT_SOURCES
|
||||
|
@ -1510,9 +1510,8 @@ my_bool cli_read_prepare_result(MYSQL *mysql, MYSQL_STMT *stmt)
|
||||
*/
|
||||
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
#define STMT_INIT_PREALLOC(S) 0
|
||||
#else
|
||||
#define STMT_INIT_PREALLOC(S) S
|
||||
#undef MY_THREAD_SPECIFIC
|
||||
#define MY_THREAD_SPECIFIC 0
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
|
||||
MYSQL_STMT * STDCALL
|
||||
@ -1533,10 +1532,8 @@ mysql_stmt_init(MYSQL *mysql)
|
||||
DBUG_RETURN(NULL);
|
||||
}
|
||||
|
||||
init_alloc_root(&stmt->mem_root, 2048, STMT_INIT_PREALLOC(2048),
|
||||
MYF(MY_THREAD_SPECIFIC));
|
||||
init_alloc_root(&stmt->result.alloc, 4096, STMT_INIT_PREALLOC(4096),
|
||||
MYF(MY_THREAD_SPECIFIC));
|
||||
init_alloc_root(&stmt->mem_root, 2048,2048, MYF(MY_THREAD_SPECIFIC));
|
||||
init_alloc_root(&stmt->result.alloc, 4096, 4096, MYF(MY_THREAD_SPECIFIC));
|
||||
stmt->result.alloc.min_malloc= sizeof(MYSQL_ROWS);
|
||||
mysql->stmts= list_add(mysql->stmts, &stmt->list);
|
||||
stmt->list.data= stmt;
|
||||
@ -1553,8 +1550,6 @@ mysql_stmt_init(MYSQL *mysql)
|
||||
DBUG_RETURN(stmt);
|
||||
}
|
||||
|
||||
#undef STMT_INIT_PREALLOC
|
||||
|
||||
|
||||
/*
|
||||
Prepare server side statement with query.
|
||||
|
@ -27,19 +27,7 @@ mysql_get_charset_by_csname = get_charset_by_csname;
|
||||
mysql_net_realloc = net_realloc;
|
||||
mysql_client_errors = client_errors;
|
||||
|
||||
VERSION {
|
||||
|
||||
libmysqlclient_18 {
|
||||
global:
|
||||
@VERSION_HEADER@
|
||||
@CLIENT_API_5_1_LIST@
|
||||
@CLIENT_API_5_5_LIST@
|
||||
|
||||
local:
|
||||
*;
|
||||
};
|
||||
|
||||
libmysqlclient_16 {
|
||||
/* empty here. aliases are added above */
|
||||
};
|
||||
|
||||
}
|
||||
@VERSION_FOOTER@
|
||||
|
@ -125,8 +125,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()
|
||||
|
||||
|
||||
@ -151,9 +155,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)
|
||||
@ -180,7 +184,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)
|
||||
|
@ -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))
|
||||
|
@ -1818,6 +1818,12 @@ SELECT f1() FROM t1 LEFT JOIN (SELECT 1 AS a FROM t1 LIMIT 0) AS d ON 1 GROUP BY
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-9662 Assertion `precision || !scale' failed in my_decimal_precision_to_length_no_truncation(uint, uint8, bool)
|
||||
--echo #
|
||||
SELECT @@collation_connection;
|
||||
SELECT CASE 1 WHEN 2 THEN ( - '3' ) END;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-5702 Incorrect results are returned with NULLIF()
|
||||
--echo #
|
||||
|
156
mysql-test/include/ctype_thai.inc
Normal file
156
mysql-test/include/ctype_thai.inc
Normal file
@ -0,0 +1,156 @@
|
||||
--echo #
|
||||
--echo # Start of ctype_thai.inc
|
||||
--echo #
|
||||
|
||||
#
|
||||
# Test Unicode Thai collations based on libthai testcases
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a VARCHAR(30) CHARACTER SET utf8 COLLATE utf8_bin);
|
||||
|
||||
INSERT INTO t1 VALUES ('-กระแย่ง');
|
||||
INSERT INTO t1 VALUES ('กก');
|
||||
INSERT INTO t1 VALUES ('กราบ');
|
||||
INSERT INTO t1 VALUES ('ข่าง');
|
||||
INSERT INTO t1 VALUES ('ข้าง');
|
||||
INSERT INTO t1 VALUES ('ข้างกระดาน');
|
||||
INSERT INTO t1 VALUES ('ข้างขึ้น');
|
||||
INSERT INTO t1 VALUES ('ข้างควาย');
|
||||
INSERT INTO t1 VALUES ('ข้างเงิน');
|
||||
INSERT INTO t1 VALUES ('ข้างแรม');
|
||||
INSERT INTO t1 VALUES ('ข้างออก');
|
||||
INSERT INTO t1 VALUES ('ข้างๆ');
|
||||
INSERT INTO t1 VALUES ('ข้างๆ คูๆ');
|
||||
INSERT INTO t1 VALUES ('ขาง');
|
||||
INSERT INTO t1 VALUES ('แข็ง');
|
||||
INSERT INTO t1 VALUES ('แข่ง');
|
||||
INSERT INTO t1 VALUES ('แข่งขัน');
|
||||
INSERT INTO t1 VALUES ('แข้ง');
|
||||
INSERT INTO t1 VALUES ('แข้งขวา');
|
||||
INSERT INTO t1 VALUES ('แข็งขัน');
|
||||
INSERT INTO t1 VALUES ('ทูลเกล้า');
|
||||
INSERT INTO t1 VALUES ('ทูลเกล้าทูลกระหม่อม');
|
||||
INSERT INTO t1 VALUES ('ทูลเกล้าฯ');
|
||||
INSERT INTO t1 VALUES ('บุญญา');
|
||||
INSERT INTO t1 VALUES ('บุญ-หลง');
|
||||
INSERT INTO t1 VALUES ('บุญหลง');
|
||||
INSERT INTO t1 VALUES ('ป่า');
|
||||
INSERT INTO t1 VALUES ('ป่าน');
|
||||
INSERT INTO t1 VALUES ('ป้า');
|
||||
INSERT INTO t1 VALUES ('ป้าน');
|
||||
INSERT INTO t1 VALUES ('ป๊า');
|
||||
INSERT INTO t1 VALUES ('ป๊าน');
|
||||
INSERT INTO t1 VALUES ('ป๋า');
|
||||
INSERT INTO t1 VALUES ('ป๋าน');
|
||||
INSERT INTO t1 VALUES ('ปา');
|
||||
INSERT INTO t1 VALUES ('ปาน');
|
||||
INSERT INTO t1 VALUES ('แป้ง');
|
||||
INSERT INTO t1 VALUES ('พณิชย์');
|
||||
INSERT INTO t1 VALUES ('ม้า');
|
||||
INSERT INTO t1 VALUES ('ฯพณฯ');
|
||||
INSERT INTO t1 VALUES ('A');
|
||||
INSERT INTO t1 VALUES ('a');
|
||||
INSERT INTO t1 VALUES ('a\'');
|
||||
INSERT INTO t1 VALUES ('A-');
|
||||
INSERT INTO t1 VALUES ('a-');
|
||||
INSERT INTO t1 VALUES ('-a');
|
||||
INSERT INTO t1 VALUES ('A.');
|
||||
INSERT INTO t1 VALUES ('a.');
|
||||
INSERT INTO t1 VALUES ('A-1');
|
||||
INSERT INTO t1 VALUES ('aa');
|
||||
INSERT INTO t1 VALUES ('AA');
|
||||
INSERT INTO t1 VALUES ('A.A.');
|
||||
INSERT INTO t1 VALUES ('a.a.');
|
||||
INSERT INTO t1 VALUES ('AAA');
|
||||
INSERT INTO t1 VALUES ('A.A.A.');
|
||||
INSERT INTO t1 VALUES ('AAAA');
|
||||
INSERT INTO t1 VALUES ('A.A.A.L.');
|
||||
INSERT INTO t1 VALUES ('A.A.A.S.');
|
||||
INSERT INTO t1 VALUES ('Aachen');
|
||||
INSERT INTO t1 VALUES ('A.A.E.');
|
||||
INSERT INTO t1 VALUES ('A.Ae.E.');
|
||||
INSERT INTO t1 VALUES ('A.A.E.E.');
|
||||
INSERT INTO t1 VALUES ('AAES');
|
||||
INSERT INTO t1 VALUES ('AAF');
|
||||
INSERT INTO t1 VALUES ('A.Agr');
|
||||
INSERT INTO t1 VALUES ('aah');
|
||||
INSERT INTO t1 VALUES ('@@@@@');
|
||||
INSERT INTO t1 VALUES ('0000');
|
||||
INSERT INTO t1 VALUES ('9999');
|
||||
INSERT INTO t1 VALUES ('Aalborg');
|
||||
INSERT INTO t1 VALUES ('aide');
|
||||
INSERT INTO t1 VALUES ('air');
|
||||
INSERT INTO t1 VALUES ('@@@air');
|
||||
INSERT INTO t1 VALUES ('air@@@');
|
||||
INSERT INTO t1 VALUES ('C.A.F');
|
||||
INSERT INTO t1 VALUES ('Canon');
|
||||
INSERT INTO t1 VALUES ('coop');
|
||||
INSERT INTO t1 VALUES ('co-op');
|
||||
INSERT INTO t1 VALUES ('COOP');
|
||||
INSERT INTO t1 VALUES ('CO-OP');
|
||||
INSERT INTO t1 VALUES ('Copenhegen');
|
||||
INSERT INTO t1 VALUES ('McArthur');
|
||||
INSERT INTO t1 VALUES ('Mc Arthur');
|
||||
INSERT INTO t1 VALUES ('Mc Mahon');
|
||||
INSERT INTO t1 VALUES ('vice-president');
|
||||
INSERT INTO t1 VALUES ('vice versa');
|
||||
INSERT INTO t1 VALUES ('vice-versa');
|
||||
INSERT INTO t1 VALUES ('10 ลิตร');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร');
|
||||
INSERT INTO t1 VALUES ('10 litre');
|
||||
INSERT INTO t1 VALUES ('10 litre (10 ลิตร)');
|
||||
INSERT INTO t1 VALUES ('10 ลิตร (10 litre)');
|
||||
INSERT INTO t1 VALUES ('10 litre (๑๐ ลิตร)');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร (10 litre)');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร [10 litre]');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร {10 litre}');
|
||||
|
||||
# Sort the table according to binary 'a'
|
||||
# To avoid problems with unpredictable order or 'AA' and 'aa'
|
||||
ALTER TABLE t1 ORDER BY a;
|
||||
|
||||
SET @backup_character_set_connection=@@character_set_connection;
|
||||
SET @backup_collation_connection=@@collation_connection;
|
||||
SET NAMES utf8;
|
||||
SET @stmt= CONCAT('ALTER TABLE t1 MODIFY a VARCHAR(30)',
|
||||
' CHARACTER SET ', @backup_character_set_connection,
|
||||
' COLLATE ', @backup_collation_connection,
|
||||
' , ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY'
|
||||
' , ADD KEY a_id (a, id)');
|
||||
PREPARE stmt FROM @stmt;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SET collation_connection=@backup_collation_connection;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Ascending sort, using filesort
|
||||
--echo #
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a, BINARY a;
|
||||
SELECT a FROM t1 ORDER BY a, BINARY a;
|
||||
|
||||
--echo #
|
||||
--echo # Descending sort, using filesort
|
||||
--echo #
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a DESC, BINARY a DESC;
|
||||
SELECT a FROM t1 ORDER BY a DESC, BINARY a DESC;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Ascending sort, using index
|
||||
--echo #
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a, id;
|
||||
SELECT a FROM t1 ORDER BY a, id;
|
||||
|
||||
--echo #
|
||||
--echo # Descending sort, using index
|
||||
--echo #
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a DESC, id DESC;
|
||||
SELECT a FROM t1 ORDER BY a DESC, id DESC;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of ctype_thai.inc
|
||||
--echo #
|
65
mysql-test/include/ctype_uca_w2.inc
Normal file
65
mysql-test/include/ctype_uca_w2.inc
Normal file
@ -0,0 +1,65 @@
|
||||
--echo #
|
||||
--echo # Start of ctype_uca_w2.inc
|
||||
--echo #
|
||||
|
||||
SELECT @@collation_connection;
|
||||
|
||||
SELECT ID, SORTLEN, COLLATION_NAME, CHARACTER_SET_NAME
|
||||
FROM INFORMATION_SCHEMA.COLLATIONS
|
||||
WHERE COLLATION_NAME LIKE @@collation_connection;
|
||||
|
||||
--echo #
|
||||
--echo # Testing strnxfrm
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 AS SELECT SPACE(3) AS a LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES (SPACE(0)),(SPACE(1)),(SPACE(2));
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(8))) FROM t1;
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4))) FROM t1;
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 1)) FROM t1;
|
||||
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'),('À'),('Á'),('Â'),('Ã'),('Ä'),('Å');
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a;
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a DESC;
|
||||
|
||||
SET @backup_character_set_connection=@@character_set_connection;
|
||||
SET @backup_collation_connection=@@collation_connection;
|
||||
|
||||
SET NAMES utf8;
|
||||
SET @stmt= CONCAT('ALTER TABLE t1 MODIFY a CHAR(10)' COLLATE utf8_bin,
|
||||
' CHARACTER SET ', @backup_character_set_connection,
|
||||
' COLLATE ', @backup_collation_connection);
|
||||
PREPARE stmt FROM @stmt;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SET collation_connection=@backup_collation_connection;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a;
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a DESC;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 AS SELECT SPACE(10) AS a LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES ('cota'),('cote'),('cotz');
|
||||
INSERT INTO t1 VALUES ('coté'),('côte'),('côté'),('cotë'),('côtë');
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
SELECT * FROM t1 ORDER BY a DESC;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of ctype_uca_w2.inc
|
||||
--echo #
|
@ -1,4 +1,5 @@
|
||||
-- require r/have_crypt.require
|
||||
disable_query_log;
|
||||
show variables like 'have_crypt';
|
||||
enable_query_log;
|
||||
# encrypt('a') is NULL if crypt(3) is not available
|
||||
# encrypt('a') is "*0" in fips mode
|
||||
if (`select length(encrypt('a')) > 3 IS NOT TRUE`) {
|
||||
skip No crypt(3);
|
||||
}
|
||||
|
6
mysql-test/include/have_des.inc
Normal file
6
mysql-test/include/have_des.inc
Normal file
@ -0,0 +1,6 @@
|
||||
# in the FIPS mode, OpenSSL disables DES and other weak algorithms
|
||||
source include/have_ssl_crypto_functs.inc;
|
||||
|
||||
if (`select des_encrypt("a", "b") IS NULL`) {
|
||||
skip DES is disabled (fips mode?);
|
||||
}
|
@ -1783,9 +1783,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");
|
||||
}
|
||||
@ -3228,7 +3231,7 @@ sub mysql_install_db {
|
||||
|
||||
# Create mtr database
|
||||
mtr_tofile($bootstrap_sql_file,
|
||||
"CREATE DATABASE mtr;\n");
|
||||
"CREATE DATABASE mtr CHARSET=latin1;\n");
|
||||
|
||||
# Add help tables and data for warning detection and supression
|
||||
mtr_tofile($bootstrap_sql_file,
|
||||
|
@ -1,4 +1,3 @@
|
||||
drop table if exists t1,t2,t3;
|
||||
create table t1 (a int not null primary key, b int, c varchar(80), e enum('a','b'));
|
||||
insert into t1 (a) values (1),(2),(3);
|
||||
alter online table t1 modify b int default 5;
|
||||
@ -62,6 +61,18 @@ create table t3 (a int not null primary key, b int, c varchar(80)) engine=merge
|
||||
alter online table t3 union=(t1,t2);
|
||||
ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.
|
||||
drop table t1,t2,t3;
|
||||
create table t1 (i int) partition by hash(i) partitions 2;
|
||||
alter online table t1 comment 'test';
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
alter online table t1 modify a int comment 'test';
|
||||
drop table t1;
|
||||
create table t1 (a int) engine=innodb;
|
||||
alter online table t1 modify a int comment 'test';
|
||||
drop table t1;
|
||||
create table t1 (a int) partition by hash(a) partitions 2;
|
||||
alter online table t1 modify a int comment 'test';
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-8948 ALTER ... INPLACE does work for BINARY, BLOB
|
||||
#
|
||||
|
@ -502,3 +502,9 @@ a
|
||||
SELECT * FROM t1 WHERE a IN (0.8,0.9);
|
||||
a
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9372 select 100 between 1 and 9223372036854775808 returns false
|
||||
#
|
||||
SELECT 100 BETWEEN 1 AND 9223372036854775808;
|
||||
100 BETWEEN 1 AND 9223372036854775808
|
||||
1
|
||||
|
@ -8,4 +8,17 @@ a
|
||||
Warnings:
|
||||
Note 1003 2000-01-01
|
||||
Note 1003 2000-01-06
|
||||
set debug_dbug='';
|
||||
drop table t1;
|
||||
create table t1 (id int not null, ut timestamp(6) not null);
|
||||
insert into t1 values(1, '2001-01-01 00:00:00.2');
|
||||
insert into t1 values(1, '2001-01-01 00:00:00.1');
|
||||
select * from t1;
|
||||
id ut
|
||||
1 2001-01-01 00:00:00.200000
|
||||
1 2001-01-01 00:00:00.100000
|
||||
select (select max(m2.ut) from t1 m2 where m1.id <> 0) from t1 m1;
|
||||
(select max(m2.ut) from t1 m2 where m1.id <> 0)
|
||||
2001-01-01 00:00:00.200000
|
||||
2001-01-01 00:00:00.200000
|
||||
drop table t1;
|
||||
|
@ -232,6 +232,19 @@ case t1.f1 when '00:00:00' then 1 end
|
||||
NULL
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-9745 Crash with CASE WHEN TRUE THEN COALESCE(CAST(NULL AS UNSIGNED)) ELSE 4 END
|
||||
#
|
||||
CREATE TABLE t1 SELECT CASE WHEN TRUE THEN COALESCE(CAST(NULL AS UNSIGNED)) ELSE 4 END AS a;
|
||||
DESCRIBE t1;
|
||||
Field Type Null Key Default Extra
|
||||
a decimal(1,0) YES NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 SELECT CASE WHEN TRUE THEN COALESCE(CAST(NULL AS UNSIGNED)) ELSE 40 END AS a;
|
||||
DESCRIBE t1;
|
||||
Field Type Null Key Default Extra
|
||||
a decimal(2,0) YES NULL
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Start of 10.1 test
|
||||
#
|
||||
#
|
||||
|
@ -7,7 +7,7 @@ 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
|
||||
Virtuozzo https://virtuozzo.com/ 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
|
||||
|
@ -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;
|
||||
#
|
||||
|
@ -2887,6 +2887,15 @@ f1()
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9662 Assertion `precision || !scale' failed in my_decimal_precision_to_length_no_truncation(uint, uint8, bool)
|
||||
#
|
||||
SELECT @@collation_connection;
|
||||
@@collation_connection
|
||||
binary
|
||||
SELECT CASE 1 WHEN 2 THEN ( - '3' ) END;
|
||||
CASE 1 WHEN 2 THEN ( - '3' ) END
|
||||
NULL
|
||||
#
|
||||
# MDEV-5702 Incorrect results are returned with NULLIF()
|
||||
#
|
||||
CREATE TABLE t1 (d DATE);
|
||||
|
@ -3296,6 +3296,15 @@ f1()
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9662 Assertion `precision || !scale' failed in my_decimal_precision_to_length_no_truncation(uint, uint8, bool)
|
||||
#
|
||||
SELECT @@collation_connection;
|
||||
@@collation_connection
|
||||
cp1251_general_ci
|
||||
SELECT CASE 1 WHEN 2 THEN ( - '3' ) END;
|
||||
CASE 1 WHEN 2 THEN ( - '3' ) END
|
||||
NULL
|
||||
#
|
||||
# MDEV-5702 Incorrect results are returned with NULLIF()
|
||||
#
|
||||
CREATE TABLE t1 (d DATE);
|
||||
|
14
mysql-test/r/ctype_cp850.result
Normal file
14
mysql-test/r/ctype_cp850.result
Normal file
@ -0,0 +1,14 @@
|
||||
#
|
||||
# Start of 5.5 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9862 Illegal mix of collation, when comparing column with CASE expression
|
||||
#
|
||||
SET NAMES cp850;
|
||||
CREATE TABLE t1 (a CHAR(1) CHARACTER SET latin1);
|
||||
SELECT a FROM t1 WHERE CASE a WHEN 'aaaa' THEN 'Y' WHEN 'aaaa' THEN 'Y' ELSE NULL END <> a;
|
||||
a
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
@ -3593,6 +3593,15 @@ f1()
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9662 Assertion `precision || !scale' failed in my_decimal_precision_to_length_no_truncation(uint, uint8, bool)
|
||||
#
|
||||
SELECT @@collation_connection;
|
||||
@@collation_connection
|
||||
latin1_swedish_ci
|
||||
SELECT CASE 1 WHEN 2 THEN ( - '3' ) END;
|
||||
CASE 1 WHEN 2 THEN ( - '3' ) END
|
||||
NULL
|
||||
#
|
||||
# MDEV-5702 Incorrect results are returned with NULLIF()
|
||||
#
|
||||
CREATE TABLE t1 (d DATE);
|
||||
|
@ -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;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
#
|
||||
|
File diff suppressed because it is too large
Load Diff
86
mysql-test/r/ctype_uca_partitions.result
Normal file
86
mysql-test/r/ctype_uca_partitions.result
Normal file
@ -0,0 +1,86 @@
|
||||
SET NAMES utf8;
|
||||
CREATE TABLE t1 (c1 VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_thai_520_w2)
|
||||
PARTITION BY KEY(c1) PARTITIONS 3;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_thai_520_w2 DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
/*!50100 PARTITION BY KEY (c1)
|
||||
PARTITIONS 3 */
|
||||
INSERT INTO t1 VALUES ('A'),('À'),('Á'),('Â'),('Ã'),('Ä'),('Å');
|
||||
INSERT INTO t1 VALUES ('B');
|
||||
INSERT INTO t1 VALUES ('C');
|
||||
INSERT INTO t1 VALUES ('D');
|
||||
INSERT INTO t1 VALUES ('E');
|
||||
INSERT INTO t1 VALUES ('F');
|
||||
INSERT INTO t1 VALUES ('G');
|
||||
INSERT INTO t1 VALUES ('H');
|
||||
INSERT INTO t1 VALUES ('I');
|
||||
INSERT INTO t1 VALUES ('J');
|
||||
INSERT INTO t1 VALUES ('K');
|
||||
INSERT INTO t1 VALUES ('L'),('Ĺ'),('Ļ'),('Ľ'),('Ŀ'),('Ł');
|
||||
INSERT INTO t1 VALUES ('M');
|
||||
INSERT INTO t1 VALUES ('N');
|
||||
INSERT INTO t1 VALUES ('O'),('Ò'),('Ó'),('Ô'),('Õ'),('Ö'),('Ø');
|
||||
INSERT INTO t1 VALUES ('P');
|
||||
INSERT INTO t1 VALUES ('Q');
|
||||
INSERT INTO t1 VALUES ('R');
|
||||
INSERT INTO t1 VALUES ('S');
|
||||
INSERT INTO t1 VALUES ('T');
|
||||
INSERT INTO t1 VALUES ('U');
|
||||
INSERT INTO t1 VALUES ('V');
|
||||
INSERT INTO t1 VALUES ('W');
|
||||
INSERT INTO t1 VALUES ('X');
|
||||
INSERT INTO t1 VALUES ('Y');
|
||||
INSERT INTO t1 VALUES ('Z');
|
||||
SELECT * FROM t1 PARTITION (p0) ORDER BY c1;
|
||||
c1
|
||||
J
|
||||
K
|
||||
L
|
||||
Ĺ
|
||||
Ľ
|
||||
Ļ
|
||||
Ł
|
||||
Ŀ
|
||||
M
|
||||
Q
|
||||
R
|
||||
T
|
||||
V
|
||||
X
|
||||
SELECT * FROM t1 PARTITION (p1) ORDER BY c1;
|
||||
c1
|
||||
A
|
||||
Á
|
||||
À
|
||||
Â
|
||||
Å
|
||||
Ä
|
||||
Ã
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
I
|
||||
N
|
||||
S
|
||||
U
|
||||
W
|
||||
Z
|
||||
SELECT * FROM t1 PARTITION (p2) ORDER BY c1;
|
||||
c1
|
||||
B
|
||||
C
|
||||
H
|
||||
O
|
||||
Ó
|
||||
Ò
|
||||
Ô
|
||||
Ö
|
||||
Õ
|
||||
Ø
|
||||
P
|
||||
Y
|
||||
DROP TABLE t1;
|
@ -4496,6 +4496,15 @@ f1()
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9662 Assertion `precision || !scale' failed in my_decimal_precision_to_length_no_truncation(uint, uint8, bool)
|
||||
#
|
||||
SELECT @@collation_connection;
|
||||
@@collation_connection
|
||||
ucs2_general_ci
|
||||
SELECT CASE 1 WHEN 2 THEN ( - '3' ) END;
|
||||
CASE 1 WHEN 2 THEN ( - '3' ) END
|
||||
NULL
|
||||
#
|
||||
# MDEV-5702 Incorrect results are returned with NULLIF()
|
||||
#
|
||||
CREATE TABLE t1 (d DATE);
|
||||
|
@ -6605,3 +6605,703 @@ DROP TABLE t1;
|
||||
#
|
||||
# End of MariaDB-10.0 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.1 tests
|
||||
#
|
||||
SET NAMES utf8;
|
||||
SET collation_connection=utf16_thai_520_w2;
|
||||
#
|
||||
# Start of ctype_uca_w2.inc
|
||||
#
|
||||
SELECT @@collation_connection;
|
||||
@@collation_connection
|
||||
utf16_thai_520_w2
|
||||
SELECT ID, SORTLEN, COLLATION_NAME, CHARACTER_SET_NAME
|
||||
FROM INFORMATION_SCHEMA.COLLATIONS
|
||||
WHERE COLLATION_NAME LIKE @@collation_connection;
|
||||
ID SORTLEN COLLATION_NAME CHARACTER_SET_NAME
|
||||
674 4 utf16_thai_520_w2 utf16
|
||||
#
|
||||
# Testing strnxfrm
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT SPACE(3) AS a LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(3) CHARACTER SET utf16 COLLATE utf16_thai_520_w2 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (SPACE(0)),(SPACE(1)),(SPACE(2));
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(8))) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(8)))
|
||||
020A020A020A020A020A020A020A020A00200020002000200020002000200020
|
||||
0020 020A020A020A020A020A020A020A020A00200020002000200020002000200020
|
||||
00200020 020A020A020A020A020A020A020A020A00200020002000200020002000200020
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4))) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(4)))
|
||||
020A020A020A020A0020002000200020
|
||||
0020 020A020A020A020A0020002000200020
|
||||
00200020 020A020A020A020A0020002000200020
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 1)) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 1))
|
||||
020A020A020A020A
|
||||
0020 020A020A020A020A
|
||||
00200020 020A020A020A020A
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 2)) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 2))
|
||||
0020002000200020
|
||||
0020 0020002000200020
|
||||
00200020 0020002000200020
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 3)) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 3))
|
||||
0020002000200020
|
||||
0020 0020002000200020
|
||||
00200020 0020002000200020
|
||||
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 (_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))
|
||||
A 0020
|
||||
Á 00200032
|
||||
À 00200035
|
||||
 0020003C
|
||||
Å 00200043
|
||||
Ä 00200047
|
||||
à 0020004E
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a DESC;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
à 0020004E
|
||||
Ä 00200047
|
||||
Å 00200043
|
||||
 0020003C
|
||||
À 00200035
|
||||
Á 00200032
|
||||
A 0020
|
||||
SET @backup_character_set_connection=@@character_set_connection;
|
||||
SET @backup_collation_connection=@@collation_connection;
|
||||
SET NAMES utf8;
|
||||
SET @stmt= CONCAT('ALTER TABLE t1 MODIFY a CHAR(10)' COLLATE utf8_bin,
|
||||
' CHARACTER SET ', @backup_character_set_connection,
|
||||
' COLLATE ', @backup_collation_connection);
|
||||
PREPARE stmt FROM @stmt;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SET collation_connection=@backup_collation_connection;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` char(10) CHARACTER SET utf16 COLLATE utf16_thai_520_w2 DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
A 0020
|
||||
Á 00200032
|
||||
À 00200035
|
||||
 0020003C
|
||||
Å 00200043
|
||||
Ä 00200047
|
||||
à 0020004E
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a DESC;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
à 0020004E
|
||||
Ä 00200047
|
||||
Å 00200043
|
||||
 0020003C
|
||||
À 00200035
|
||||
Á 00200032
|
||||
A 0020
|
||||
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 ('cota'),('cote'),('cotz');
|
||||
INSERT INTO t1 VALUES ('coté'),('côte'),('côté'),('cotë'),('côtë');
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
cota
|
||||
cote
|
||||
coté
|
||||
cotë
|
||||
côte
|
||||
côté
|
||||
côtë
|
||||
cotz
|
||||
SELECT * FROM t1 ORDER BY a DESC;
|
||||
a
|
||||
cotz
|
||||
côtë
|
||||
côté
|
||||
côte
|
||||
cotë
|
||||
coté
|
||||
cote
|
||||
cota
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_uca_w2.inc
|
||||
#
|
||||
#
|
||||
# Start of ctype_thai.inc
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(30) CHARACTER SET utf8 COLLATE utf8_bin);
|
||||
INSERT INTO t1 VALUES ('-กระแย่ง');
|
||||
INSERT INTO t1 VALUES ('กก');
|
||||
INSERT INTO t1 VALUES ('กราบ');
|
||||
INSERT INTO t1 VALUES ('ข่าง');
|
||||
INSERT INTO t1 VALUES ('ข้าง');
|
||||
INSERT INTO t1 VALUES ('ข้างกระดาน');
|
||||
INSERT INTO t1 VALUES ('ข้างขึ้น');
|
||||
INSERT INTO t1 VALUES ('ข้างควาย');
|
||||
INSERT INTO t1 VALUES ('ข้างเงิน');
|
||||
INSERT INTO t1 VALUES ('ข้างแรม');
|
||||
INSERT INTO t1 VALUES ('ข้างออก');
|
||||
INSERT INTO t1 VALUES ('ข้างๆ');
|
||||
INSERT INTO t1 VALUES ('ข้างๆ คูๆ');
|
||||
INSERT INTO t1 VALUES ('ขาง');
|
||||
INSERT INTO t1 VALUES ('แข็ง');
|
||||
INSERT INTO t1 VALUES ('แข่ง');
|
||||
INSERT INTO t1 VALUES ('แข่งขัน');
|
||||
INSERT INTO t1 VALUES ('แข้ง');
|
||||
INSERT INTO t1 VALUES ('แข้งขวา');
|
||||
INSERT INTO t1 VALUES ('แข็งขัน');
|
||||
INSERT INTO t1 VALUES ('ทูลเกล้า');
|
||||
INSERT INTO t1 VALUES ('ทูลเกล้าทูลกระหม่อม');
|
||||
INSERT INTO t1 VALUES ('ทูลเกล้าฯ');
|
||||
INSERT INTO t1 VALUES ('บุญญา');
|
||||
INSERT INTO t1 VALUES ('บุญ-หลง');
|
||||
INSERT INTO t1 VALUES ('บุญหลง');
|
||||
INSERT INTO t1 VALUES ('ป่า');
|
||||
INSERT INTO t1 VALUES ('ป่าน');
|
||||
INSERT INTO t1 VALUES ('ป้า');
|
||||
INSERT INTO t1 VALUES ('ป้าน');
|
||||
INSERT INTO t1 VALUES ('ป๊า');
|
||||
INSERT INTO t1 VALUES ('ป๊าน');
|
||||
INSERT INTO t1 VALUES ('ป๋า');
|
||||
INSERT INTO t1 VALUES ('ป๋าน');
|
||||
INSERT INTO t1 VALUES ('ปา');
|
||||
INSERT INTO t1 VALUES ('ปาน');
|
||||
INSERT INTO t1 VALUES ('แป้ง');
|
||||
INSERT INTO t1 VALUES ('พณิชย์');
|
||||
INSERT INTO t1 VALUES ('ม้า');
|
||||
INSERT INTO t1 VALUES ('ฯพณฯ');
|
||||
INSERT INTO t1 VALUES ('A');
|
||||
INSERT INTO t1 VALUES ('a');
|
||||
INSERT INTO t1 VALUES ('a\'');
|
||||
INSERT INTO t1 VALUES ('A-');
|
||||
INSERT INTO t1 VALUES ('a-');
|
||||
INSERT INTO t1 VALUES ('-a');
|
||||
INSERT INTO t1 VALUES ('A.');
|
||||
INSERT INTO t1 VALUES ('a.');
|
||||
INSERT INTO t1 VALUES ('A-1');
|
||||
INSERT INTO t1 VALUES ('aa');
|
||||
INSERT INTO t1 VALUES ('AA');
|
||||
INSERT INTO t1 VALUES ('A.A.');
|
||||
INSERT INTO t1 VALUES ('a.a.');
|
||||
INSERT INTO t1 VALUES ('AAA');
|
||||
INSERT INTO t1 VALUES ('A.A.A.');
|
||||
INSERT INTO t1 VALUES ('AAAA');
|
||||
INSERT INTO t1 VALUES ('A.A.A.L.');
|
||||
INSERT INTO t1 VALUES ('A.A.A.S.');
|
||||
INSERT INTO t1 VALUES ('Aachen');
|
||||
INSERT INTO t1 VALUES ('A.A.E.');
|
||||
INSERT INTO t1 VALUES ('A.Ae.E.');
|
||||
INSERT INTO t1 VALUES ('A.A.E.E.');
|
||||
INSERT INTO t1 VALUES ('AAES');
|
||||
INSERT INTO t1 VALUES ('AAF');
|
||||
INSERT INTO t1 VALUES ('A.Agr');
|
||||
INSERT INTO t1 VALUES ('aah');
|
||||
INSERT INTO t1 VALUES ('@@@@@');
|
||||
INSERT INTO t1 VALUES ('0000');
|
||||
INSERT INTO t1 VALUES ('9999');
|
||||
INSERT INTO t1 VALUES ('Aalborg');
|
||||
INSERT INTO t1 VALUES ('aide');
|
||||
INSERT INTO t1 VALUES ('air');
|
||||
INSERT INTO t1 VALUES ('@@@air');
|
||||
INSERT INTO t1 VALUES ('air@@@');
|
||||
INSERT INTO t1 VALUES ('C.A.F');
|
||||
INSERT INTO t1 VALUES ('Canon');
|
||||
INSERT INTO t1 VALUES ('coop');
|
||||
INSERT INTO t1 VALUES ('co-op');
|
||||
INSERT INTO t1 VALUES ('COOP');
|
||||
INSERT INTO t1 VALUES ('CO-OP');
|
||||
INSERT INTO t1 VALUES ('Copenhegen');
|
||||
INSERT INTO t1 VALUES ('McArthur');
|
||||
INSERT INTO t1 VALUES ('Mc Arthur');
|
||||
INSERT INTO t1 VALUES ('Mc Mahon');
|
||||
INSERT INTO t1 VALUES ('vice-president');
|
||||
INSERT INTO t1 VALUES ('vice versa');
|
||||
INSERT INTO t1 VALUES ('vice-versa');
|
||||
INSERT INTO t1 VALUES ('10 ลิตร');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร');
|
||||
INSERT INTO t1 VALUES ('10 litre');
|
||||
INSERT INTO t1 VALUES ('10 litre (10 ลิตร)');
|
||||
INSERT INTO t1 VALUES ('10 ลิตร (10 litre)');
|
||||
INSERT INTO t1 VALUES ('10 litre (๑๐ ลิตร)');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร (10 litre)');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร [10 litre]');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร {10 litre}');
|
||||
ALTER TABLE t1 ORDER BY a;
|
||||
SET @backup_character_set_connection=@@character_set_connection;
|
||||
SET @backup_collation_connection=@@collation_connection;
|
||||
SET NAMES utf8;
|
||||
SET @stmt= CONCAT('ALTER TABLE t1 MODIFY a VARCHAR(30)',
|
||||
' CHARACTER SET ', @backup_character_set_connection,
|
||||
' COLLATE ', @backup_collation_connection,
|
||||
' , ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY'
|
||||
' , ADD KEY a_id (a, id)');
|
||||
PREPARE stmt FROM @stmt;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SET collation_connection=@backup_collation_connection;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(30) CHARACTER SET utf16 COLLATE utf16_thai_520_w2 DEFAULT NULL,
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `a_id` (`a`,`id`)
|
||||
) ENGINE=MyISAM AUTO_INCREMENT=97 DEFAULT CHARSET=latin1
|
||||
#
|
||||
# Ascending sort, using filesort
|
||||
#
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a, BINARY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a_id 127 NULL 96 Using index; Using filesort
|
||||
SELECT a FROM t1 ORDER BY a, BINARY a;
|
||||
a
|
||||
-a
|
||||
-กระแย่ง
|
||||
@@@@@
|
||||
@@@air
|
||||
0000
|
||||
10 litre
|
||||
10 litre (10 ลิตร)
|
||||
10 litre (๑๐ ลิตร)
|
||||
10 ลิตร
|
||||
๑๐ ลิตร
|
||||
10 ลิตร (10 litre)
|
||||
๑๐ ลิตร (10 litre)
|
||||
๑๐ ลิตร [10 litre]
|
||||
๑๐ ลิตร {10 litre}
|
||||
9999
|
||||
A
|
||||
a
|
||||
A-
|
||||
a-
|
||||
A-1
|
||||
A.
|
||||
a.
|
||||
A.A.
|
||||
a.a.
|
||||
A.A.A.
|
||||
A.A.A.L.
|
||||
A.A.A.S.
|
||||
A.A.E.
|
||||
A.A.E.E.
|
||||
A.Ae.E.
|
||||
A.Agr
|
||||
a'
|
||||
AA
|
||||
aa
|
||||
AAA
|
||||
AAAA
|
||||
Aachen
|
||||
AAES
|
||||
AAF
|
||||
aah
|
||||
Aalborg
|
||||
aide
|
||||
air
|
||||
air@@@
|
||||
C.A.F
|
||||
Canon
|
||||
CO-OP
|
||||
co-op
|
||||
COOP
|
||||
coop
|
||||
Copenhegen
|
||||
Mc Arthur
|
||||
Mc Mahon
|
||||
McArthur
|
||||
vice versa
|
||||
vice-president
|
||||
vice-versa
|
||||
กก
|
||||
กราบ
|
||||
ขาง
|
||||
ข่าง
|
||||
ข้าง
|
||||
ข้างๆ
|
||||
ข้างๆ คูๆ
|
||||
ข้างกระดาน
|
||||
ข้างขึ้น
|
||||
ข้างควาย
|
||||
ข้างเงิน
|
||||
ข้างแรม
|
||||
ข้างออก
|
||||
แข็ง
|
||||
แข่ง
|
||||
แข้ง
|
||||
แข้งขวา
|
||||
แข็งขัน
|
||||
แข่งขัน
|
||||
ทูลเกล้า
|
||||
ทูลเกล้าทูลกระหม่อม
|
||||
ทูลเกล้าฯ
|
||||
บุญ-หลง
|
||||
บุญญา
|
||||
บุญหลง
|
||||
ปา
|
||||
ป่า
|
||||
ป้า
|
||||
ป๊า
|
||||
ป๋า
|
||||
ปาน
|
||||
ป่าน
|
||||
ป้าน
|
||||
ป๊าน
|
||||
ป๋าน
|
||||
แป้ง
|
||||
พณิชย์
|
||||
ม้า
|
||||
ฯพณฯ
|
||||
#
|
||||
# Descending sort, using filesort
|
||||
#
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a DESC, BINARY a DESC;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a_id 127 NULL 96 Using index; Using filesort
|
||||
SELECT a FROM t1 ORDER BY a DESC, BINARY a DESC;
|
||||
a
|
||||
ฯพณฯ
|
||||
ม้า
|
||||
พณิชย์
|
||||
แป้ง
|
||||
ป๋าน
|
||||
ป๊าน
|
||||
ป้าน
|
||||
ป่าน
|
||||
ปาน
|
||||
ป๋า
|
||||
ป๊า
|
||||
ป้า
|
||||
ป่า
|
||||
ปา
|
||||
บุญหลง
|
||||
บุญญา
|
||||
บุญ-หลง
|
||||
ทูลเกล้าฯ
|
||||
ทูลเกล้าทูลกระหม่อม
|
||||
ทูลเกล้า
|
||||
แข่งขัน
|
||||
แข็งขัน
|
||||
แข้งขวา
|
||||
แข้ง
|
||||
แข่ง
|
||||
แข็ง
|
||||
ข้างออก
|
||||
ข้างแรม
|
||||
ข้างเงิน
|
||||
ข้างควาย
|
||||
ข้างขึ้น
|
||||
ข้างกระดาน
|
||||
ข้างๆ คูๆ
|
||||
ข้างๆ
|
||||
ข้าง
|
||||
ข่าง
|
||||
ขาง
|
||||
กราบ
|
||||
กก
|
||||
vice-versa
|
||||
vice-president
|
||||
vice versa
|
||||
McArthur
|
||||
Mc Mahon
|
||||
Mc Arthur
|
||||
Copenhegen
|
||||
coop
|
||||
COOP
|
||||
co-op
|
||||
CO-OP
|
||||
Canon
|
||||
C.A.F
|
||||
air@@@
|
||||
air
|
||||
aide
|
||||
Aalborg
|
||||
aah
|
||||
AAF
|
||||
AAES
|
||||
Aachen
|
||||
AAAA
|
||||
AAA
|
||||
aa
|
||||
AA
|
||||
a'
|
||||
A.Agr
|
||||
A.Ae.E.
|
||||
A.A.E.E.
|
||||
A.A.E.
|
||||
A.A.A.S.
|
||||
A.A.A.L.
|
||||
A.A.A.
|
||||
a.a.
|
||||
A.A.
|
||||
a.
|
||||
A.
|
||||
A-1
|
||||
a-
|
||||
A-
|
||||
a
|
||||
A
|
||||
9999
|
||||
๑๐ ลิตร {10 litre}
|
||||
๑๐ ลิตร [10 litre]
|
||||
๑๐ ลิตร (10 litre)
|
||||
10 ลิตร (10 litre)
|
||||
๑๐ ลิตร
|
||||
10 ลิตร
|
||||
10 litre (๑๐ ลิตร)
|
||||
10 litre (10 ลิตร)
|
||||
10 litre
|
||||
0000
|
||||
@@@air
|
||||
@@@@@
|
||||
-กระแย่ง
|
||||
-a
|
||||
#
|
||||
# Ascending sort, using index
|
||||
#
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a, id;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a_id 127 NULL 96 Using index
|
||||
SELECT a FROM t1 ORDER BY a, id;
|
||||
a
|
||||
-a
|
||||
-กระแย่ง
|
||||
@@@@@
|
||||
@@@air
|
||||
0000
|
||||
10 litre
|
||||
10 litre (10 ลิตร)
|
||||
10 litre (๑๐ ลิตร)
|
||||
10 ลิตร
|
||||
๑๐ ลิตร
|
||||
10 ลิตร (10 litre)
|
||||
๑๐ ลิตร (10 litre)
|
||||
๑๐ ลิตร [10 litre]
|
||||
๑๐ ลิตร {10 litre}
|
||||
9999
|
||||
A
|
||||
a
|
||||
A-
|
||||
a-
|
||||
A-1
|
||||
A.
|
||||
a.
|
||||
A.A.
|
||||
a.a.
|
||||
A.A.A.
|
||||
A.A.A.L.
|
||||
A.A.A.S.
|
||||
A.A.E.
|
||||
A.A.E.E.
|
||||
A.Ae.E.
|
||||
A.Agr
|
||||
a'
|
||||
AA
|
||||
aa
|
||||
AAA
|
||||
AAAA
|
||||
Aachen
|
||||
AAES
|
||||
AAF
|
||||
aah
|
||||
Aalborg
|
||||
aide
|
||||
air
|
||||
air@@@
|
||||
C.A.F
|
||||
Canon
|
||||
CO-OP
|
||||
co-op
|
||||
COOP
|
||||
coop
|
||||
Copenhegen
|
||||
Mc Arthur
|
||||
Mc Mahon
|
||||
McArthur
|
||||
vice versa
|
||||
vice-president
|
||||
vice-versa
|
||||
กก
|
||||
กราบ
|
||||
ขาง
|
||||
ข่าง
|
||||
ข้าง
|
||||
ข้างๆ
|
||||
ข้างๆ คูๆ
|
||||
ข้างกระดาน
|
||||
ข้างขึ้น
|
||||
ข้างควาย
|
||||
ข้างเงิน
|
||||
ข้างแรม
|
||||
ข้างออก
|
||||
แข็ง
|
||||
แข่ง
|
||||
แข้ง
|
||||
แข้งขวา
|
||||
แข็งขัน
|
||||
แข่งขัน
|
||||
ทูลเกล้า
|
||||
ทูลเกล้าทูลกระหม่อม
|
||||
ทูลเกล้าฯ
|
||||
บุญ-หลง
|
||||
บุญญา
|
||||
บุญหลง
|
||||
ปา
|
||||
ป่า
|
||||
ป้า
|
||||
ป๊า
|
||||
ป๋า
|
||||
ปาน
|
||||
ป่าน
|
||||
ป้าน
|
||||
ป๊าน
|
||||
ป๋าน
|
||||
แป้ง
|
||||
พณิชย์
|
||||
ม้า
|
||||
ฯพณฯ
|
||||
#
|
||||
# Descending sort, using index
|
||||
#
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a DESC, id DESC;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a_id 127 NULL 96 Using index
|
||||
SELECT a FROM t1 ORDER BY a DESC, id DESC;
|
||||
a
|
||||
ฯพณฯ
|
||||
ม้า
|
||||
พณิชย์
|
||||
แป้ง
|
||||
ป๋าน
|
||||
ป๊าน
|
||||
ป้าน
|
||||
ป่าน
|
||||
ปาน
|
||||
ป๋า
|
||||
ป๊า
|
||||
ป้า
|
||||
ป่า
|
||||
ปา
|
||||
บุญหลง
|
||||
บุญญา
|
||||
บุญ-หลง
|
||||
ทูลเกล้าฯ
|
||||
ทูลเกล้าทูลกระหม่อม
|
||||
ทูลเกล้า
|
||||
แข่งขัน
|
||||
แข็งขัน
|
||||
แข้งขวา
|
||||
แข้ง
|
||||
แข่ง
|
||||
แข็ง
|
||||
ข้างออก
|
||||
ข้างแรม
|
||||
ข้างเงิน
|
||||
ข้างควาย
|
||||
ข้างขึ้น
|
||||
ข้างกระดาน
|
||||
ข้างๆ คูๆ
|
||||
ข้างๆ
|
||||
ข้าง
|
||||
ข่าง
|
||||
ขาง
|
||||
กราบ
|
||||
กก
|
||||
vice-versa
|
||||
vice-president
|
||||
vice versa
|
||||
McArthur
|
||||
Mc Mahon
|
||||
Mc Arthur
|
||||
Copenhegen
|
||||
coop
|
||||
COOP
|
||||
co-op
|
||||
CO-OP
|
||||
Canon
|
||||
C.A.F
|
||||
air@@@
|
||||
air
|
||||
aide
|
||||
Aalborg
|
||||
aah
|
||||
AAF
|
||||
AAES
|
||||
Aachen
|
||||
AAAA
|
||||
AAA
|
||||
aa
|
||||
AA
|
||||
a'
|
||||
A.Agr
|
||||
A.Ae.E.
|
||||
A.A.E.E.
|
||||
A.A.E.
|
||||
A.A.A.S.
|
||||
A.A.A.L.
|
||||
A.A.A.
|
||||
a.a.
|
||||
A.A.
|
||||
a.
|
||||
A.
|
||||
A-1
|
||||
a-
|
||||
A-
|
||||
a
|
||||
A
|
||||
9999
|
||||
๑๐ ลิตร {10 litre}
|
||||
๑๐ ลิตร [10 litre]
|
||||
๑๐ ลิตร (10 litre)
|
||||
10 ลิตร (10 litre)
|
||||
๑๐ ลิตร
|
||||
10 ลิตร
|
||||
10 litre (๑๐ ลิตร)
|
||||
10 litre (10 ลิตร)
|
||||
10 litre
|
||||
0000
|
||||
@@@air
|
||||
@@@@@
|
||||
-กระแย่ง
|
||||
-a
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_thai.inc
|
||||
#
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
|
@ -6625,3 +6625,703 @@ DROP TABLE t1;
|
||||
#
|
||||
# End of MariaDB-10.0 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.1 tests
|
||||
#
|
||||
SET NAMES utf8;
|
||||
SET collation_connection=utf32_thai_520_w2;
|
||||
#
|
||||
# Start of ctype_uca_w2.inc
|
||||
#
|
||||
SELECT @@collation_connection;
|
||||
@@collation_connection
|
||||
utf32_thai_520_w2
|
||||
SELECT ID, SORTLEN, COLLATION_NAME, CHARACTER_SET_NAME
|
||||
FROM INFORMATION_SCHEMA.COLLATIONS
|
||||
WHERE COLLATION_NAME LIKE @@collation_connection;
|
||||
ID SORTLEN COLLATION_NAME CHARACTER_SET_NAME
|
||||
738 4 utf32_thai_520_w2 utf32
|
||||
#
|
||||
# Testing strnxfrm
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT SPACE(3) AS a LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(3) CHARACTER SET utf32 COLLATE utf32_thai_520_w2 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (SPACE(0)),(SPACE(1)),(SPACE(2));
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(8))) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(8)))
|
||||
020A020A020A020A020A020A020A020A00200020002000200020002000200020
|
||||
00000020 020A020A020A020A020A020A020A020A00200020002000200020002000200020
|
||||
0000002000000020 020A020A020A020A020A020A020A020A00200020002000200020002000200020
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4))) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(4)))
|
||||
020A020A020A020A0020002000200020
|
||||
00000020 020A020A020A020A0020002000200020
|
||||
0000002000000020 020A020A020A020A0020002000200020
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 1)) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 1))
|
||||
020A020A020A020A
|
||||
00000020 020A020A020A020A
|
||||
0000002000000020 020A020A020A020A
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 2)) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 2))
|
||||
0020002000200020
|
||||
00000020 0020002000200020
|
||||
0000002000000020 0020002000200020
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 3)) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 3))
|
||||
0020002000200020
|
||||
00000020 0020002000200020
|
||||
0000002000000020 0020002000200020
|
||||
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 (_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))
|
||||
A 0020
|
||||
Á 00200032
|
||||
À 00200035
|
||||
 0020003C
|
||||
Å 00200043
|
||||
Ä 00200047
|
||||
à 0020004E
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a DESC;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
à 0020004E
|
||||
Ä 00200047
|
||||
Å 00200043
|
||||
 0020003C
|
||||
À 00200035
|
||||
Á 00200032
|
||||
A 0020
|
||||
SET @backup_character_set_connection=@@character_set_connection;
|
||||
SET @backup_collation_connection=@@collation_connection;
|
||||
SET NAMES utf8;
|
||||
SET @stmt= CONCAT('ALTER TABLE t1 MODIFY a CHAR(10)' COLLATE utf8_bin,
|
||||
' CHARACTER SET ', @backup_character_set_connection,
|
||||
' COLLATE ', @backup_collation_connection);
|
||||
PREPARE stmt FROM @stmt;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SET collation_connection=@backup_collation_connection;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` char(10) CHARACTER SET utf32 COLLATE utf32_thai_520_w2 DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
A 0020
|
||||
Á 00200032
|
||||
À 00200035
|
||||
 0020003C
|
||||
Å 00200043
|
||||
Ä 00200047
|
||||
à 0020004E
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a DESC;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
à 0020004E
|
||||
Ä 00200047
|
||||
Å 00200043
|
||||
 0020003C
|
||||
À 00200035
|
||||
Á 00200032
|
||||
A 0020
|
||||
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 ('cota'),('cote'),('cotz');
|
||||
INSERT INTO t1 VALUES ('coté'),('côte'),('côté'),('cotë'),('côtë');
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
cota
|
||||
cote
|
||||
coté
|
||||
cotë
|
||||
côte
|
||||
côté
|
||||
côtë
|
||||
cotz
|
||||
SELECT * FROM t1 ORDER BY a DESC;
|
||||
a
|
||||
cotz
|
||||
côtë
|
||||
côté
|
||||
côte
|
||||
cotë
|
||||
coté
|
||||
cote
|
||||
cota
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_uca_w2.inc
|
||||
#
|
||||
#
|
||||
# Start of ctype_thai.inc
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(30) CHARACTER SET utf8 COLLATE utf8_bin);
|
||||
INSERT INTO t1 VALUES ('-กระแย่ง');
|
||||
INSERT INTO t1 VALUES ('กก');
|
||||
INSERT INTO t1 VALUES ('กราบ');
|
||||
INSERT INTO t1 VALUES ('ข่าง');
|
||||
INSERT INTO t1 VALUES ('ข้าง');
|
||||
INSERT INTO t1 VALUES ('ข้างกระดาน');
|
||||
INSERT INTO t1 VALUES ('ข้างขึ้น');
|
||||
INSERT INTO t1 VALUES ('ข้างควาย');
|
||||
INSERT INTO t1 VALUES ('ข้างเงิน');
|
||||
INSERT INTO t1 VALUES ('ข้างแรม');
|
||||
INSERT INTO t1 VALUES ('ข้างออก');
|
||||
INSERT INTO t1 VALUES ('ข้างๆ');
|
||||
INSERT INTO t1 VALUES ('ข้างๆ คูๆ');
|
||||
INSERT INTO t1 VALUES ('ขาง');
|
||||
INSERT INTO t1 VALUES ('แข็ง');
|
||||
INSERT INTO t1 VALUES ('แข่ง');
|
||||
INSERT INTO t1 VALUES ('แข่งขัน');
|
||||
INSERT INTO t1 VALUES ('แข้ง');
|
||||
INSERT INTO t1 VALUES ('แข้งขวา');
|
||||
INSERT INTO t1 VALUES ('แข็งขัน');
|
||||
INSERT INTO t1 VALUES ('ทูลเกล้า');
|
||||
INSERT INTO t1 VALUES ('ทูลเกล้าทูลกระหม่อม');
|
||||
INSERT INTO t1 VALUES ('ทูลเกล้าฯ');
|
||||
INSERT INTO t1 VALUES ('บุญญา');
|
||||
INSERT INTO t1 VALUES ('บุญ-หลง');
|
||||
INSERT INTO t1 VALUES ('บุญหลง');
|
||||
INSERT INTO t1 VALUES ('ป่า');
|
||||
INSERT INTO t1 VALUES ('ป่าน');
|
||||
INSERT INTO t1 VALUES ('ป้า');
|
||||
INSERT INTO t1 VALUES ('ป้าน');
|
||||
INSERT INTO t1 VALUES ('ป๊า');
|
||||
INSERT INTO t1 VALUES ('ป๊าน');
|
||||
INSERT INTO t1 VALUES ('ป๋า');
|
||||
INSERT INTO t1 VALUES ('ป๋าน');
|
||||
INSERT INTO t1 VALUES ('ปา');
|
||||
INSERT INTO t1 VALUES ('ปาน');
|
||||
INSERT INTO t1 VALUES ('แป้ง');
|
||||
INSERT INTO t1 VALUES ('พณิชย์');
|
||||
INSERT INTO t1 VALUES ('ม้า');
|
||||
INSERT INTO t1 VALUES ('ฯพณฯ');
|
||||
INSERT INTO t1 VALUES ('A');
|
||||
INSERT INTO t1 VALUES ('a');
|
||||
INSERT INTO t1 VALUES ('a\'');
|
||||
INSERT INTO t1 VALUES ('A-');
|
||||
INSERT INTO t1 VALUES ('a-');
|
||||
INSERT INTO t1 VALUES ('-a');
|
||||
INSERT INTO t1 VALUES ('A.');
|
||||
INSERT INTO t1 VALUES ('a.');
|
||||
INSERT INTO t1 VALUES ('A-1');
|
||||
INSERT INTO t1 VALUES ('aa');
|
||||
INSERT INTO t1 VALUES ('AA');
|
||||
INSERT INTO t1 VALUES ('A.A.');
|
||||
INSERT INTO t1 VALUES ('a.a.');
|
||||
INSERT INTO t1 VALUES ('AAA');
|
||||
INSERT INTO t1 VALUES ('A.A.A.');
|
||||
INSERT INTO t1 VALUES ('AAAA');
|
||||
INSERT INTO t1 VALUES ('A.A.A.L.');
|
||||
INSERT INTO t1 VALUES ('A.A.A.S.');
|
||||
INSERT INTO t1 VALUES ('Aachen');
|
||||
INSERT INTO t1 VALUES ('A.A.E.');
|
||||
INSERT INTO t1 VALUES ('A.Ae.E.');
|
||||
INSERT INTO t1 VALUES ('A.A.E.E.');
|
||||
INSERT INTO t1 VALUES ('AAES');
|
||||
INSERT INTO t1 VALUES ('AAF');
|
||||
INSERT INTO t1 VALUES ('A.Agr');
|
||||
INSERT INTO t1 VALUES ('aah');
|
||||
INSERT INTO t1 VALUES ('@@@@@');
|
||||
INSERT INTO t1 VALUES ('0000');
|
||||
INSERT INTO t1 VALUES ('9999');
|
||||
INSERT INTO t1 VALUES ('Aalborg');
|
||||
INSERT INTO t1 VALUES ('aide');
|
||||
INSERT INTO t1 VALUES ('air');
|
||||
INSERT INTO t1 VALUES ('@@@air');
|
||||
INSERT INTO t1 VALUES ('air@@@');
|
||||
INSERT INTO t1 VALUES ('C.A.F');
|
||||
INSERT INTO t1 VALUES ('Canon');
|
||||
INSERT INTO t1 VALUES ('coop');
|
||||
INSERT INTO t1 VALUES ('co-op');
|
||||
INSERT INTO t1 VALUES ('COOP');
|
||||
INSERT INTO t1 VALUES ('CO-OP');
|
||||
INSERT INTO t1 VALUES ('Copenhegen');
|
||||
INSERT INTO t1 VALUES ('McArthur');
|
||||
INSERT INTO t1 VALUES ('Mc Arthur');
|
||||
INSERT INTO t1 VALUES ('Mc Mahon');
|
||||
INSERT INTO t1 VALUES ('vice-president');
|
||||
INSERT INTO t1 VALUES ('vice versa');
|
||||
INSERT INTO t1 VALUES ('vice-versa');
|
||||
INSERT INTO t1 VALUES ('10 ลิตร');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร');
|
||||
INSERT INTO t1 VALUES ('10 litre');
|
||||
INSERT INTO t1 VALUES ('10 litre (10 ลิตร)');
|
||||
INSERT INTO t1 VALUES ('10 ลิตร (10 litre)');
|
||||
INSERT INTO t1 VALUES ('10 litre (๑๐ ลิตร)');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร (10 litre)');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร [10 litre]');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร {10 litre}');
|
||||
ALTER TABLE t1 ORDER BY a;
|
||||
SET @backup_character_set_connection=@@character_set_connection;
|
||||
SET @backup_collation_connection=@@collation_connection;
|
||||
SET NAMES utf8;
|
||||
SET @stmt= CONCAT('ALTER TABLE t1 MODIFY a VARCHAR(30)',
|
||||
' CHARACTER SET ', @backup_character_set_connection,
|
||||
' COLLATE ', @backup_collation_connection,
|
||||
' , ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY'
|
||||
' , ADD KEY a_id (a, id)');
|
||||
PREPARE stmt FROM @stmt;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SET collation_connection=@backup_collation_connection;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(30) CHARACTER SET utf32 COLLATE utf32_thai_520_w2 DEFAULT NULL,
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `a_id` (`a`,`id`)
|
||||
) ENGINE=MyISAM AUTO_INCREMENT=97 DEFAULT CHARSET=latin1
|
||||
#
|
||||
# Ascending sort, using filesort
|
||||
#
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a, BINARY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a_id 127 NULL 96 Using index; Using filesort
|
||||
SELECT a FROM t1 ORDER BY a, BINARY a;
|
||||
a
|
||||
-a
|
||||
-กระแย่ง
|
||||
@@@@@
|
||||
@@@air
|
||||
0000
|
||||
10 litre
|
||||
10 litre (10 ลิตร)
|
||||
10 litre (๑๐ ลิตร)
|
||||
10 ลิตร
|
||||
๑๐ ลิตร
|
||||
10 ลิตร (10 litre)
|
||||
๑๐ ลิตร (10 litre)
|
||||
๑๐ ลิตร [10 litre]
|
||||
๑๐ ลิตร {10 litre}
|
||||
9999
|
||||
A
|
||||
a
|
||||
A-
|
||||
a-
|
||||
A-1
|
||||
A.
|
||||
a.
|
||||
A.A.
|
||||
a.a.
|
||||
A.A.A.
|
||||
A.A.A.L.
|
||||
A.A.A.S.
|
||||
A.A.E.
|
||||
A.A.E.E.
|
||||
A.Ae.E.
|
||||
A.Agr
|
||||
a'
|
||||
AA
|
||||
aa
|
||||
AAA
|
||||
AAAA
|
||||
Aachen
|
||||
AAES
|
||||
AAF
|
||||
aah
|
||||
Aalborg
|
||||
aide
|
||||
air
|
||||
air@@@
|
||||
C.A.F
|
||||
Canon
|
||||
CO-OP
|
||||
co-op
|
||||
COOP
|
||||
coop
|
||||
Copenhegen
|
||||
Mc Arthur
|
||||
Mc Mahon
|
||||
McArthur
|
||||
vice versa
|
||||
vice-president
|
||||
vice-versa
|
||||
กก
|
||||
กราบ
|
||||
ขาง
|
||||
ข่าง
|
||||
ข้าง
|
||||
ข้างๆ
|
||||
ข้างๆ คูๆ
|
||||
ข้างกระดาน
|
||||
ข้างขึ้น
|
||||
ข้างควาย
|
||||
ข้างเงิน
|
||||
ข้างแรม
|
||||
ข้างออก
|
||||
แข็ง
|
||||
แข่ง
|
||||
แข้ง
|
||||
แข้งขวา
|
||||
แข็งขัน
|
||||
แข่งขัน
|
||||
ทูลเกล้า
|
||||
ทูลเกล้าทูลกระหม่อม
|
||||
ทูลเกล้าฯ
|
||||
บุญ-หลง
|
||||
บุญญา
|
||||
บุญหลง
|
||||
ปา
|
||||
ป่า
|
||||
ป้า
|
||||
ป๊า
|
||||
ป๋า
|
||||
ปาน
|
||||
ป่าน
|
||||
ป้าน
|
||||
ป๊าน
|
||||
ป๋าน
|
||||
แป้ง
|
||||
พณิชย์
|
||||
ม้า
|
||||
ฯพณฯ
|
||||
#
|
||||
# Descending sort, using filesort
|
||||
#
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a DESC, BINARY a DESC;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a_id 127 NULL 96 Using index; Using filesort
|
||||
SELECT a FROM t1 ORDER BY a DESC, BINARY a DESC;
|
||||
a
|
||||
ฯพณฯ
|
||||
ม้า
|
||||
พณิชย์
|
||||
แป้ง
|
||||
ป๋าน
|
||||
ป๊าน
|
||||
ป้าน
|
||||
ป่าน
|
||||
ปาน
|
||||
ป๋า
|
||||
ป๊า
|
||||
ป้า
|
||||
ป่า
|
||||
ปา
|
||||
บุญหลง
|
||||
บุญญา
|
||||
บุญ-หลง
|
||||
ทูลเกล้าฯ
|
||||
ทูลเกล้าทูลกระหม่อม
|
||||
ทูลเกล้า
|
||||
แข่งขัน
|
||||
แข็งขัน
|
||||
แข้งขวา
|
||||
แข้ง
|
||||
แข่ง
|
||||
แข็ง
|
||||
ข้างออก
|
||||
ข้างแรม
|
||||
ข้างเงิน
|
||||
ข้างควาย
|
||||
ข้างขึ้น
|
||||
ข้างกระดาน
|
||||
ข้างๆ คูๆ
|
||||
ข้างๆ
|
||||
ข้าง
|
||||
ข่าง
|
||||
ขาง
|
||||
กราบ
|
||||
กก
|
||||
vice-versa
|
||||
vice-president
|
||||
vice versa
|
||||
McArthur
|
||||
Mc Mahon
|
||||
Mc Arthur
|
||||
Copenhegen
|
||||
coop
|
||||
COOP
|
||||
co-op
|
||||
CO-OP
|
||||
Canon
|
||||
C.A.F
|
||||
air@@@
|
||||
air
|
||||
aide
|
||||
Aalborg
|
||||
aah
|
||||
AAF
|
||||
AAES
|
||||
Aachen
|
||||
AAAA
|
||||
AAA
|
||||
aa
|
||||
AA
|
||||
a'
|
||||
A.Agr
|
||||
A.Ae.E.
|
||||
A.A.E.E.
|
||||
A.A.E.
|
||||
A.A.A.S.
|
||||
A.A.A.L.
|
||||
A.A.A.
|
||||
a.a.
|
||||
A.A.
|
||||
a.
|
||||
A.
|
||||
A-1
|
||||
a-
|
||||
A-
|
||||
a
|
||||
A
|
||||
9999
|
||||
๑๐ ลิตร {10 litre}
|
||||
๑๐ ลิตร [10 litre]
|
||||
๑๐ ลิตร (10 litre)
|
||||
10 ลิตร (10 litre)
|
||||
๑๐ ลิตร
|
||||
10 ลิตร
|
||||
10 litre (๑๐ ลิตร)
|
||||
10 litre (10 ลิตร)
|
||||
10 litre
|
||||
0000
|
||||
@@@air
|
||||
@@@@@
|
||||
-กระแย่ง
|
||||
-a
|
||||
#
|
||||
# Ascending sort, using index
|
||||
#
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a, id;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a_id 127 NULL 96 Using index
|
||||
SELECT a FROM t1 ORDER BY a, id;
|
||||
a
|
||||
-a
|
||||
-กระแย่ง
|
||||
@@@@@
|
||||
@@@air
|
||||
0000
|
||||
10 litre
|
||||
10 litre (10 ลิตร)
|
||||
10 litre (๑๐ ลิตร)
|
||||
10 ลิตร
|
||||
๑๐ ลิตร
|
||||
10 ลิตร (10 litre)
|
||||
๑๐ ลิตร (10 litre)
|
||||
๑๐ ลิตร [10 litre]
|
||||
๑๐ ลิตร {10 litre}
|
||||
9999
|
||||
A
|
||||
a
|
||||
A-
|
||||
a-
|
||||
A-1
|
||||
A.
|
||||
a.
|
||||
A.A.
|
||||
a.a.
|
||||
A.A.A.
|
||||
A.A.A.L.
|
||||
A.A.A.S.
|
||||
A.A.E.
|
||||
A.A.E.E.
|
||||
A.Ae.E.
|
||||
A.Agr
|
||||
a'
|
||||
AA
|
||||
aa
|
||||
AAA
|
||||
AAAA
|
||||
Aachen
|
||||
AAES
|
||||
AAF
|
||||
aah
|
||||
Aalborg
|
||||
aide
|
||||
air
|
||||
air@@@
|
||||
C.A.F
|
||||
Canon
|
||||
CO-OP
|
||||
co-op
|
||||
COOP
|
||||
coop
|
||||
Copenhegen
|
||||
Mc Arthur
|
||||
Mc Mahon
|
||||
McArthur
|
||||
vice versa
|
||||
vice-president
|
||||
vice-versa
|
||||
กก
|
||||
กราบ
|
||||
ขาง
|
||||
ข่าง
|
||||
ข้าง
|
||||
ข้างๆ
|
||||
ข้างๆ คูๆ
|
||||
ข้างกระดาน
|
||||
ข้างขึ้น
|
||||
ข้างควาย
|
||||
ข้างเงิน
|
||||
ข้างแรม
|
||||
ข้างออก
|
||||
แข็ง
|
||||
แข่ง
|
||||
แข้ง
|
||||
แข้งขวา
|
||||
แข็งขัน
|
||||
แข่งขัน
|
||||
ทูลเกล้า
|
||||
ทูลเกล้าทูลกระหม่อม
|
||||
ทูลเกล้าฯ
|
||||
บุญ-หลง
|
||||
บุญญา
|
||||
บุญหลง
|
||||
ปา
|
||||
ป่า
|
||||
ป้า
|
||||
ป๊า
|
||||
ป๋า
|
||||
ปาน
|
||||
ป่าน
|
||||
ป้าน
|
||||
ป๊าน
|
||||
ป๋าน
|
||||
แป้ง
|
||||
พณิชย์
|
||||
ม้า
|
||||
ฯพณฯ
|
||||
#
|
||||
# Descending sort, using index
|
||||
#
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a DESC, id DESC;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a_id 127 NULL 96 Using index
|
||||
SELECT a FROM t1 ORDER BY a DESC, id DESC;
|
||||
a
|
||||
ฯพณฯ
|
||||
ม้า
|
||||
พณิชย์
|
||||
แป้ง
|
||||
ป๋าน
|
||||
ป๊าน
|
||||
ป้าน
|
||||
ป่าน
|
||||
ปาน
|
||||
ป๋า
|
||||
ป๊า
|
||||
ป้า
|
||||
ป่า
|
||||
ปา
|
||||
บุญหลง
|
||||
บุญญา
|
||||
บุญ-หลง
|
||||
ทูลเกล้าฯ
|
||||
ทูลเกล้าทูลกระหม่อม
|
||||
ทูลเกล้า
|
||||
แข่งขัน
|
||||
แข็งขัน
|
||||
แข้งขวา
|
||||
แข้ง
|
||||
แข่ง
|
||||
แข็ง
|
||||
ข้างออก
|
||||
ข้างแรม
|
||||
ข้างเงิน
|
||||
ข้างควาย
|
||||
ข้างขึ้น
|
||||
ข้างกระดาน
|
||||
ข้างๆ คูๆ
|
||||
ข้างๆ
|
||||
ข้าง
|
||||
ข่าง
|
||||
ขาง
|
||||
กราบ
|
||||
กก
|
||||
vice-versa
|
||||
vice-president
|
||||
vice versa
|
||||
McArthur
|
||||
Mc Mahon
|
||||
Mc Arthur
|
||||
Copenhegen
|
||||
coop
|
||||
COOP
|
||||
co-op
|
||||
CO-OP
|
||||
Canon
|
||||
C.A.F
|
||||
air@@@
|
||||
air
|
||||
aide
|
||||
Aalborg
|
||||
aah
|
||||
AAF
|
||||
AAES
|
||||
Aachen
|
||||
AAAA
|
||||
AAA
|
||||
aa
|
||||
AA
|
||||
a'
|
||||
A.Agr
|
||||
A.Ae.E.
|
||||
A.A.E.E.
|
||||
A.A.E.
|
||||
A.A.A.S.
|
||||
A.A.A.L.
|
||||
A.A.A.
|
||||
a.a.
|
||||
A.A.
|
||||
a.
|
||||
A.
|
||||
A-1
|
||||
a-
|
||||
A-
|
||||
a
|
||||
A
|
||||
9999
|
||||
๑๐ ลิตร {10 litre}
|
||||
๑๐ ลิตร [10 litre]
|
||||
๑๐ ลิตร (10 litre)
|
||||
10 ลิตร (10 litre)
|
||||
๑๐ ลิตร
|
||||
10 ลิตร
|
||||
10 litre (๑๐ ลิตร)
|
||||
10 litre (10 ลิตร)
|
||||
10 litre
|
||||
0000
|
||||
@@@air
|
||||
@@@@@
|
||||
-กระแย่ง
|
||||
-a
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_thai.inc
|
||||
#
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
|
@ -5338,6 +5338,15 @@ f1()
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9662 Assertion `precision || !scale' failed in my_decimal_precision_to_length_no_truncation(uint, uint8, bool)
|
||||
#
|
||||
SELECT @@collation_connection;
|
||||
@@collation_connection
|
||||
utf8_general_ci
|
||||
SELECT CASE 1 WHEN 2 THEN ( - '3' ) END;
|
||||
CASE 1 WHEN 2 THEN ( - '3' ) END
|
||||
NULL
|
||||
#
|
||||
# MDEV-5702 Incorrect results are returned with NULLIF()
|
||||
#
|
||||
CREATE TABLE t1 (d DATE);
|
||||
@ -6200,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
|
||||
#
|
||||
#
|
||||
|
@ -5315,3 +5315,703 @@ DROP TABLE t1;
|
||||
#
|
||||
# End of MariaDB-10.0 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.1 tests
|
||||
#
|
||||
SET NAMES utf8;
|
||||
SET collation_connection=utf8mb4_thai_520_w2;
|
||||
#
|
||||
# Start of ctype_uca_w2.inc
|
||||
#
|
||||
SELECT @@collation_connection;
|
||||
@@collation_connection
|
||||
utf8mb4_thai_520_w2
|
||||
SELECT ID, SORTLEN, COLLATION_NAME, CHARACTER_SET_NAME
|
||||
FROM INFORMATION_SCHEMA.COLLATIONS
|
||||
WHERE COLLATION_NAME LIKE @@collation_connection;
|
||||
ID SORTLEN COLLATION_NAME CHARACTER_SET_NAME
|
||||
610 4 utf8mb4_thai_520_w2 utf8mb4
|
||||
#
|
||||
# Testing strnxfrm
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT SPACE(3) AS a LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_thai_520_w2 NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (SPACE(0)),(SPACE(1)),(SPACE(2));
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(8))) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(8)))
|
||||
020A020A020A020A020A020A020A020A00200020002000200020002000200020
|
||||
20 020A020A020A020A020A020A020A020A00200020002000200020002000200020
|
||||
2020 020A020A020A020A020A020A020A020A00200020002000200020002000200020
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4))) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(4)))
|
||||
020A020A020A020A0020002000200020
|
||||
20 020A020A020A020A0020002000200020
|
||||
2020 020A020A020A020A0020002000200020
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 1)) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 1))
|
||||
020A020A020A020A
|
||||
20 020A020A020A020A
|
||||
2020 020A020A020A020A
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 2)) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 2))
|
||||
0020002000200020
|
||||
20 0020002000200020
|
||||
2020 0020002000200020
|
||||
SELECT HEX(a), HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 3)) FROM t1;
|
||||
HEX(a) HEX(WEIGHT_STRING(a AS CHAR(4) LEVEL 3))
|
||||
0020002000200020
|
||||
20 0020002000200020
|
||||
2020 0020002000200020
|
||||
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 (_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))
|
||||
A 0020
|
||||
Á 00200032
|
||||
À 00200035
|
||||
 0020003C
|
||||
Å 00200043
|
||||
Ä 00200047
|
||||
à 0020004E
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a DESC;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
à 0020004E
|
||||
Ä 00200047
|
||||
Å 00200043
|
||||
 0020003C
|
||||
À 00200035
|
||||
Á 00200032
|
||||
A 0020
|
||||
SET @backup_character_set_connection=@@character_set_connection;
|
||||
SET @backup_collation_connection=@@collation_connection;
|
||||
SET NAMES utf8;
|
||||
SET @stmt= CONCAT('ALTER TABLE t1 MODIFY a CHAR(10)' COLLATE utf8_bin,
|
||||
' CHARACTER SET ', @backup_character_set_connection,
|
||||
' COLLATE ', @backup_collation_connection);
|
||||
PREPARE stmt FROM @stmt;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SET collation_connection=@backup_collation_connection;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_thai_520_w2 DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
A 0020
|
||||
Á 00200032
|
||||
À 00200035
|
||||
 0020003C
|
||||
Å 00200043
|
||||
Ä 00200047
|
||||
à 0020004E
|
||||
SELECT a, HEX(WEIGHT_STRING(a LEVEL 2)) FROM t1 ORDER BY a DESC;
|
||||
a HEX(WEIGHT_STRING(a LEVEL 2))
|
||||
à 0020004E
|
||||
Ä 00200047
|
||||
Å 00200043
|
||||
 0020003C
|
||||
À 00200035
|
||||
Á 00200032
|
||||
A 0020
|
||||
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 ('cota'),('cote'),('cotz');
|
||||
INSERT INTO t1 VALUES ('coté'),('côte'),('côté'),('cotë'),('côtë');
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
cota
|
||||
cote
|
||||
coté
|
||||
cotë
|
||||
côte
|
||||
côté
|
||||
côtë
|
||||
cotz
|
||||
SELECT * FROM t1 ORDER BY a DESC;
|
||||
a
|
||||
cotz
|
||||
côtë
|
||||
côté
|
||||
côte
|
||||
cotë
|
||||
coté
|
||||
cote
|
||||
cota
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_uca_w2.inc
|
||||
#
|
||||
#
|
||||
# Start of ctype_thai.inc
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(30) CHARACTER SET utf8 COLLATE utf8_bin);
|
||||
INSERT INTO t1 VALUES ('-กระแย่ง');
|
||||
INSERT INTO t1 VALUES ('กก');
|
||||
INSERT INTO t1 VALUES ('กราบ');
|
||||
INSERT INTO t1 VALUES ('ข่าง');
|
||||
INSERT INTO t1 VALUES ('ข้าง');
|
||||
INSERT INTO t1 VALUES ('ข้างกระดาน');
|
||||
INSERT INTO t1 VALUES ('ข้างขึ้น');
|
||||
INSERT INTO t1 VALUES ('ข้างควาย');
|
||||
INSERT INTO t1 VALUES ('ข้างเงิน');
|
||||
INSERT INTO t1 VALUES ('ข้างแรม');
|
||||
INSERT INTO t1 VALUES ('ข้างออก');
|
||||
INSERT INTO t1 VALUES ('ข้างๆ');
|
||||
INSERT INTO t1 VALUES ('ข้างๆ คูๆ');
|
||||
INSERT INTO t1 VALUES ('ขาง');
|
||||
INSERT INTO t1 VALUES ('แข็ง');
|
||||
INSERT INTO t1 VALUES ('แข่ง');
|
||||
INSERT INTO t1 VALUES ('แข่งขัน');
|
||||
INSERT INTO t1 VALUES ('แข้ง');
|
||||
INSERT INTO t1 VALUES ('แข้งขวา');
|
||||
INSERT INTO t1 VALUES ('แข็งขัน');
|
||||
INSERT INTO t1 VALUES ('ทูลเกล้า');
|
||||
INSERT INTO t1 VALUES ('ทูลเกล้าทูลกระหม่อม');
|
||||
INSERT INTO t1 VALUES ('ทูลเกล้าฯ');
|
||||
INSERT INTO t1 VALUES ('บุญญา');
|
||||
INSERT INTO t1 VALUES ('บุญ-หลง');
|
||||
INSERT INTO t1 VALUES ('บุญหลง');
|
||||
INSERT INTO t1 VALUES ('ป่า');
|
||||
INSERT INTO t1 VALUES ('ป่าน');
|
||||
INSERT INTO t1 VALUES ('ป้า');
|
||||
INSERT INTO t1 VALUES ('ป้าน');
|
||||
INSERT INTO t1 VALUES ('ป๊า');
|
||||
INSERT INTO t1 VALUES ('ป๊าน');
|
||||
INSERT INTO t1 VALUES ('ป๋า');
|
||||
INSERT INTO t1 VALUES ('ป๋าน');
|
||||
INSERT INTO t1 VALUES ('ปา');
|
||||
INSERT INTO t1 VALUES ('ปาน');
|
||||
INSERT INTO t1 VALUES ('แป้ง');
|
||||
INSERT INTO t1 VALUES ('พณิชย์');
|
||||
INSERT INTO t1 VALUES ('ม้า');
|
||||
INSERT INTO t1 VALUES ('ฯพณฯ');
|
||||
INSERT INTO t1 VALUES ('A');
|
||||
INSERT INTO t1 VALUES ('a');
|
||||
INSERT INTO t1 VALUES ('a\'');
|
||||
INSERT INTO t1 VALUES ('A-');
|
||||
INSERT INTO t1 VALUES ('a-');
|
||||
INSERT INTO t1 VALUES ('-a');
|
||||
INSERT INTO t1 VALUES ('A.');
|
||||
INSERT INTO t1 VALUES ('a.');
|
||||
INSERT INTO t1 VALUES ('A-1');
|
||||
INSERT INTO t1 VALUES ('aa');
|
||||
INSERT INTO t1 VALUES ('AA');
|
||||
INSERT INTO t1 VALUES ('A.A.');
|
||||
INSERT INTO t1 VALUES ('a.a.');
|
||||
INSERT INTO t1 VALUES ('AAA');
|
||||
INSERT INTO t1 VALUES ('A.A.A.');
|
||||
INSERT INTO t1 VALUES ('AAAA');
|
||||
INSERT INTO t1 VALUES ('A.A.A.L.');
|
||||
INSERT INTO t1 VALUES ('A.A.A.S.');
|
||||
INSERT INTO t1 VALUES ('Aachen');
|
||||
INSERT INTO t1 VALUES ('A.A.E.');
|
||||
INSERT INTO t1 VALUES ('A.Ae.E.');
|
||||
INSERT INTO t1 VALUES ('A.A.E.E.');
|
||||
INSERT INTO t1 VALUES ('AAES');
|
||||
INSERT INTO t1 VALUES ('AAF');
|
||||
INSERT INTO t1 VALUES ('A.Agr');
|
||||
INSERT INTO t1 VALUES ('aah');
|
||||
INSERT INTO t1 VALUES ('@@@@@');
|
||||
INSERT INTO t1 VALUES ('0000');
|
||||
INSERT INTO t1 VALUES ('9999');
|
||||
INSERT INTO t1 VALUES ('Aalborg');
|
||||
INSERT INTO t1 VALUES ('aide');
|
||||
INSERT INTO t1 VALUES ('air');
|
||||
INSERT INTO t1 VALUES ('@@@air');
|
||||
INSERT INTO t1 VALUES ('air@@@');
|
||||
INSERT INTO t1 VALUES ('C.A.F');
|
||||
INSERT INTO t1 VALUES ('Canon');
|
||||
INSERT INTO t1 VALUES ('coop');
|
||||
INSERT INTO t1 VALUES ('co-op');
|
||||
INSERT INTO t1 VALUES ('COOP');
|
||||
INSERT INTO t1 VALUES ('CO-OP');
|
||||
INSERT INTO t1 VALUES ('Copenhegen');
|
||||
INSERT INTO t1 VALUES ('McArthur');
|
||||
INSERT INTO t1 VALUES ('Mc Arthur');
|
||||
INSERT INTO t1 VALUES ('Mc Mahon');
|
||||
INSERT INTO t1 VALUES ('vice-president');
|
||||
INSERT INTO t1 VALUES ('vice versa');
|
||||
INSERT INTO t1 VALUES ('vice-versa');
|
||||
INSERT INTO t1 VALUES ('10 ลิตร');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร');
|
||||
INSERT INTO t1 VALUES ('10 litre');
|
||||
INSERT INTO t1 VALUES ('10 litre (10 ลิตร)');
|
||||
INSERT INTO t1 VALUES ('10 ลิตร (10 litre)');
|
||||
INSERT INTO t1 VALUES ('10 litre (๑๐ ลิตร)');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร (10 litre)');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร [10 litre]');
|
||||
INSERT INTO t1 VALUES ('๑๐ ลิตร {10 litre}');
|
||||
ALTER TABLE t1 ORDER BY a;
|
||||
SET @backup_character_set_connection=@@character_set_connection;
|
||||
SET @backup_collation_connection=@@collation_connection;
|
||||
SET NAMES utf8;
|
||||
SET @stmt= CONCAT('ALTER TABLE t1 MODIFY a VARCHAR(30)',
|
||||
' CHARACTER SET ', @backup_character_set_connection,
|
||||
' COLLATE ', @backup_collation_connection,
|
||||
' , ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY'
|
||||
' , ADD KEY a_id (a, id)');
|
||||
PREPARE stmt FROM @stmt;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SET collation_connection=@backup_collation_connection;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_thai_520_w2 DEFAULT NULL,
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `a_id` (`a`,`id`)
|
||||
) ENGINE=MyISAM AUTO_INCREMENT=97 DEFAULT CHARSET=latin1
|
||||
#
|
||||
# Ascending sort, using filesort
|
||||
#
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a, BINARY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a_id 127 NULL 96 Using index; Using filesort
|
||||
SELECT a FROM t1 ORDER BY a, BINARY a;
|
||||
a
|
||||
-a
|
||||
-กระแย่ง
|
||||
@@@@@
|
||||
@@@air
|
||||
0000
|
||||
10 litre
|
||||
10 litre (10 ลิตร)
|
||||
10 litre (๑๐ ลิตร)
|
||||
10 ลิตร
|
||||
๑๐ ลิตร
|
||||
10 ลิตร (10 litre)
|
||||
๑๐ ลิตร (10 litre)
|
||||
๑๐ ลิตร [10 litre]
|
||||
๑๐ ลิตร {10 litre}
|
||||
9999
|
||||
A
|
||||
a
|
||||
A-
|
||||
a-
|
||||
A-1
|
||||
A.
|
||||
a.
|
||||
A.A.
|
||||
a.a.
|
||||
A.A.A.
|
||||
A.A.A.L.
|
||||
A.A.A.S.
|
||||
A.A.E.
|
||||
A.A.E.E.
|
||||
A.Ae.E.
|
||||
A.Agr
|
||||
a'
|
||||
AA
|
||||
aa
|
||||
AAA
|
||||
AAAA
|
||||
Aachen
|
||||
AAES
|
||||
AAF
|
||||
aah
|
||||
Aalborg
|
||||
aide
|
||||
air
|
||||
air@@@
|
||||
C.A.F
|
||||
Canon
|
||||
CO-OP
|
||||
co-op
|
||||
COOP
|
||||
coop
|
||||
Copenhegen
|
||||
Mc Arthur
|
||||
Mc Mahon
|
||||
McArthur
|
||||
vice versa
|
||||
vice-president
|
||||
vice-versa
|
||||
กก
|
||||
กราบ
|
||||
ขาง
|
||||
ข่าง
|
||||
ข้าง
|
||||
ข้างๆ
|
||||
ข้างๆ คูๆ
|
||||
ข้างกระดาน
|
||||
ข้างขึ้น
|
||||
ข้างควาย
|
||||
ข้างเงิน
|
||||
ข้างแรม
|
||||
ข้างออก
|
||||
แข็ง
|
||||
แข่ง
|
||||
แข้ง
|
||||
แข้งขวา
|
||||
แข็งขัน
|
||||
แข่งขัน
|
||||
ทูลเกล้า
|
||||
ทูลเกล้าทูลกระหม่อม
|
||||
ทูลเกล้าฯ
|
||||
บุญ-หลง
|
||||
บุญญา
|
||||
บุญหลง
|
||||
ปา
|
||||
ป่า
|
||||
ป้า
|
||||
ป๊า
|
||||
ป๋า
|
||||
ปาน
|
||||
ป่าน
|
||||
ป้าน
|
||||
ป๊าน
|
||||
ป๋าน
|
||||
แป้ง
|
||||
พณิชย์
|
||||
ม้า
|
||||
ฯพณฯ
|
||||
#
|
||||
# Descending sort, using filesort
|
||||
#
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a DESC, BINARY a DESC;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a_id 127 NULL 96 Using index; Using filesort
|
||||
SELECT a FROM t1 ORDER BY a DESC, BINARY a DESC;
|
||||
a
|
||||
ฯพณฯ
|
||||
ม้า
|
||||
พณิชย์
|
||||
แป้ง
|
||||
ป๋าน
|
||||
ป๊าน
|
||||
ป้าน
|
||||
ป่าน
|
||||
ปาน
|
||||
ป๋า
|
||||
ป๊า
|
||||
ป้า
|
||||
ป่า
|
||||
ปา
|
||||
บุญหลง
|
||||
บุญญา
|
||||
บุญ-หลง
|
||||
ทูลเกล้าฯ
|
||||
ทูลเกล้าทูลกระหม่อม
|
||||
ทูลเกล้า
|
||||
แข่งขัน
|
||||
แข็งขัน
|
||||
แข้งขวา
|
||||
แข้ง
|
||||
แข่ง
|
||||
แข็ง
|
||||
ข้างออก
|
||||
ข้างแรม
|
||||
ข้างเงิน
|
||||
ข้างควาย
|
||||
ข้างขึ้น
|
||||
ข้างกระดาน
|
||||
ข้างๆ คูๆ
|
||||
ข้างๆ
|
||||
ข้าง
|
||||
ข่าง
|
||||
ขาง
|
||||
กราบ
|
||||
กก
|
||||
vice-versa
|
||||
vice-president
|
||||
vice versa
|
||||
McArthur
|
||||
Mc Mahon
|
||||
Mc Arthur
|
||||
Copenhegen
|
||||
coop
|
||||
COOP
|
||||
co-op
|
||||
CO-OP
|
||||
Canon
|
||||
C.A.F
|
||||
air@@@
|
||||
air
|
||||
aide
|
||||
Aalborg
|
||||
aah
|
||||
AAF
|
||||
AAES
|
||||
Aachen
|
||||
AAAA
|
||||
AAA
|
||||
aa
|
||||
AA
|
||||
a'
|
||||
A.Agr
|
||||
A.Ae.E.
|
||||
A.A.E.E.
|
||||
A.A.E.
|
||||
A.A.A.S.
|
||||
A.A.A.L.
|
||||
A.A.A.
|
||||
a.a.
|
||||
A.A.
|
||||
a.
|
||||
A.
|
||||
A-1
|
||||
a-
|
||||
A-
|
||||
a
|
||||
A
|
||||
9999
|
||||
๑๐ ลิตร {10 litre}
|
||||
๑๐ ลิตร [10 litre]
|
||||
๑๐ ลิตร (10 litre)
|
||||
10 ลิตร (10 litre)
|
||||
๑๐ ลิตร
|
||||
10 ลิตร
|
||||
10 litre (๑๐ ลิตร)
|
||||
10 litre (10 ลิตร)
|
||||
10 litre
|
||||
0000
|
||||
@@@air
|
||||
@@@@@
|
||||
-กระแย่ง
|
||||
-a
|
||||
#
|
||||
# Ascending sort, using index
|
||||
#
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a, id;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a_id 127 NULL 96 Using index
|
||||
SELECT a FROM t1 ORDER BY a, id;
|
||||
a
|
||||
-a
|
||||
-กระแย่ง
|
||||
@@@@@
|
||||
@@@air
|
||||
0000
|
||||
10 litre
|
||||
10 litre (10 ลิตร)
|
||||
10 litre (๑๐ ลิตร)
|
||||
10 ลิตร
|
||||
๑๐ ลิตร
|
||||
10 ลิตร (10 litre)
|
||||
๑๐ ลิตร (10 litre)
|
||||
๑๐ ลิตร [10 litre]
|
||||
๑๐ ลิตร {10 litre}
|
||||
9999
|
||||
A
|
||||
a
|
||||
A-
|
||||
a-
|
||||
A-1
|
||||
A.
|
||||
a.
|
||||
A.A.
|
||||
a.a.
|
||||
A.A.A.
|
||||
A.A.A.L.
|
||||
A.A.A.S.
|
||||
A.A.E.
|
||||
A.A.E.E.
|
||||
A.Ae.E.
|
||||
A.Agr
|
||||
a'
|
||||
AA
|
||||
aa
|
||||
AAA
|
||||
AAAA
|
||||
Aachen
|
||||
AAES
|
||||
AAF
|
||||
aah
|
||||
Aalborg
|
||||
aide
|
||||
air
|
||||
air@@@
|
||||
C.A.F
|
||||
Canon
|
||||
CO-OP
|
||||
co-op
|
||||
COOP
|
||||
coop
|
||||
Copenhegen
|
||||
Mc Arthur
|
||||
Mc Mahon
|
||||
McArthur
|
||||
vice versa
|
||||
vice-president
|
||||
vice-versa
|
||||
กก
|
||||
กราบ
|
||||
ขาง
|
||||
ข่าง
|
||||
ข้าง
|
||||
ข้างๆ
|
||||
ข้างๆ คูๆ
|
||||
ข้างกระดาน
|
||||
ข้างขึ้น
|
||||
ข้างควาย
|
||||
ข้างเงิน
|
||||
ข้างแรม
|
||||
ข้างออก
|
||||
แข็ง
|
||||
แข่ง
|
||||
แข้ง
|
||||
แข้งขวา
|
||||
แข็งขัน
|
||||
แข่งขัน
|
||||
ทูลเกล้า
|
||||
ทูลเกล้าทูลกระหม่อม
|
||||
ทูลเกล้าฯ
|
||||
บุญ-หลง
|
||||
บุญญา
|
||||
บุญหลง
|
||||
ปา
|
||||
ป่า
|
||||
ป้า
|
||||
ป๊า
|
||||
ป๋า
|
||||
ปาน
|
||||
ป่าน
|
||||
ป้าน
|
||||
ป๊าน
|
||||
ป๋าน
|
||||
แป้ง
|
||||
พณิชย์
|
||||
ม้า
|
||||
ฯพณฯ
|
||||
#
|
||||
# Descending sort, using index
|
||||
#
|
||||
EXPLAIN SELECT a FROM t1 ORDER BY a DESC, id DESC;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a_id 127 NULL 96 Using index
|
||||
SELECT a FROM t1 ORDER BY a DESC, id DESC;
|
||||
a
|
||||
ฯพณฯ
|
||||
ม้า
|
||||
พณิชย์
|
||||
แป้ง
|
||||
ป๋าน
|
||||
ป๊าน
|
||||
ป้าน
|
||||
ป่าน
|
||||
ปาน
|
||||
ป๋า
|
||||
ป๊า
|
||||
ป้า
|
||||
ป่า
|
||||
ปา
|
||||
บุญหลง
|
||||
บุญญา
|
||||
บุญ-หลง
|
||||
ทูลเกล้าฯ
|
||||
ทูลเกล้าทูลกระหม่อม
|
||||
ทูลเกล้า
|
||||
แข่งขัน
|
||||
แข็งขัน
|
||||
แข้งขวา
|
||||
แข้ง
|
||||
แข่ง
|
||||
แข็ง
|
||||
ข้างออก
|
||||
ข้างแรม
|
||||
ข้างเงิน
|
||||
ข้างควาย
|
||||
ข้างขึ้น
|
||||
ข้างกระดาน
|
||||
ข้างๆ คูๆ
|
||||
ข้างๆ
|
||||
ข้าง
|
||||
ข่าง
|
||||
ขาง
|
||||
กราบ
|
||||
กก
|
||||
vice-versa
|
||||
vice-president
|
||||
vice versa
|
||||
McArthur
|
||||
Mc Mahon
|
||||
Mc Arthur
|
||||
Copenhegen
|
||||
coop
|
||||
COOP
|
||||
co-op
|
||||
CO-OP
|
||||
Canon
|
||||
C.A.F
|
||||
air@@@
|
||||
air
|
||||
aide
|
||||
Aalborg
|
||||
aah
|
||||
AAF
|
||||
AAES
|
||||
Aachen
|
||||
AAAA
|
||||
AAA
|
||||
aa
|
||||
AA
|
||||
a'
|
||||
A.Agr
|
||||
A.Ae.E.
|
||||
A.A.E.E.
|
||||
A.A.E.
|
||||
A.A.A.S.
|
||||
A.A.A.L.
|
||||
A.A.A.
|
||||
a.a.
|
||||
A.A.
|
||||
a.
|
||||
A.
|
||||
A-1
|
||||
a-
|
||||
A-
|
||||
a
|
||||
A
|
||||
9999
|
||||
๑๐ ลิตร {10 litre}
|
||||
๑๐ ลิตร [10 litre]
|
||||
๑๐ ลิตร (10 litre)
|
||||
10 ลิตร (10 litre)
|
||||
๑๐ ลิตร
|
||||
10 ลิตร
|
||||
10 litre (๑๐ ลิตร)
|
||||
10 litre (10 ลิตร)
|
||||
10 litre
|
||||
0000
|
||||
@@@air
|
||||
@@@@@
|
||||
-กระแย่ง
|
||||
-a
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_thai.inc
|
||||
#
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
|
@ -1101,7 +1101,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t3 system NULL NULL NULL NULL 1 100.00
|
||||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select 6 AS `a`,5 AS `b` from `test`.`t3` where (not(<expr_cache><6,5>(<in_optimizer>((6,5),<exists>(select 7,5 having (trigcond(((<cache>(6) = 7) or isnull(7))) and trigcond(((<cache>(5) = 5) or isnull(5))) and trigcond(<is_not_null_test>(7)) and trigcond(<is_not_null_test>(5))))))))
|
||||
Note 1003 select 6 AS `a`,5 AS `b` from `test`.`t3` where 1
|
||||
SELECT t.a,t.b FROM t3 RIGHT JOIN ((SELECT * FROM t1) AS t, t2) ON t2.b != 0
|
||||
WHERE (t.a,t.b) NOT IN (SELECT 7, 5);
|
||||
a b
|
||||
@ -1115,7 +1115,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t3 system NULL NULL NULL NULL 1 100.00
|
||||
3 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select 6 AS `a`,5 AS `b` from `test`.`t3` where (not(<expr_cache><6,5>(<in_optimizer>((6,5),<exists>(select 7,5 having (trigcond(((<cache>(6) = 7) or isnull(7))) and trigcond(((<cache>(5) = 5) or isnull(5))) and trigcond(<is_not_null_test>(7)) and trigcond(<is_not_null_test>(5))))))))
|
||||
Note 1003 select 6 AS `a`,5 AS `b` from `test`.`t3` where 1
|
||||
SELECT t.a,t.b FROM t3 RIGHT JOIN (v1 AS t, t2) ON t2.b != 0
|
||||
WHERE (t.a,t.b) NOT IN (SELECT 7, 5);
|
||||
a b
|
||||
@ -1129,7 +1129,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t3 system NULL NULL NULL NULL 1 100.00
|
||||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select 6 AS `a`,5 AS `b` from `test`.`t3` where (not(<expr_cache><6,5>(<in_optimizer>((6,5),<exists>(select 7,5 having (trigcond(((<cache>(6) = 7) or isnull(7))) and trigcond(((<cache>(5) = 5) or isnull(5))) and trigcond(<is_not_null_test>(7)) and trigcond(<is_not_null_test>(5))))))))
|
||||
Note 1003 select 6 AS `a`,5 AS `b` from `test`.`t3` where 1
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
|
@ -475,6 +475,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
|
||||
|
@ -15,3 +15,15 @@ CREATE TABLE t1(a VARCHAR(2) CHARACTER SET big5 COLLATE big5_chinese_ci,
|
||||
FULLTEXT(a));
|
||||
INSERT INTO t1 VALUES(0xA3C2);
|
||||
DROP TABLE t1;
|
||||
create table t1 (
|
||||
id varchar(255),
|
||||
business_name text null collate utf8mb4_unicode_ci,
|
||||
street_address text,
|
||||
fulltext index ft (business_name),
|
||||
fulltext index ft2 (street_address)
|
||||
);
|
||||
select * from t1 where match (business_name, street_address) against ('some business name and address here');
|
||||
ERROR HY000: Can't find FULLTEXT index matching the column list
|
||||
select * from t1 where match (business_name, street_address) against ('some business name and address here' in boolean mode);
|
||||
id business_name street_address
|
||||
drop table t1;
|
||||
|
@ -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);
|
||||
|
@ -667,9 +667,14 @@ ERROR 22003: BIGINT UNSIGNED value is out of range in '(18446744073709551615 DIV
|
||||
CREATE TABLE t1(a BIGINT, b BIGINT UNSIGNED);
|
||||
INSERT INTO t1 VALUES(-9223372036854775808, 9223372036854775809);
|
||||
SELECT -a FROM t1;
|
||||
ERROR 22003: BIGINT value is out of range in '-(-9223372036854775808)'
|
||||
ERROR 22003: BIGINT value is out of range in '-(`test`.`t1`.`a`)'
|
||||
SELECT -b FROM t1;
|
||||
ERROR 22003: BIGINT value is out of range in '-(9223372036854775809)'
|
||||
ERROR 22003: BIGINT value is out of range in '-(`test`.`t1`.`b`)'
|
||||
INSERT INTO t1 VALUES(0,0);
|
||||
SELECT -a FROM t1;
|
||||
ERROR 22003: BIGINT value is out of range in '-(`test`.`t1`.`a`)'
|
||||
SELECT -b FROM t1;
|
||||
ERROR 22003: BIGINT value is out of range in '-(`test`.`t1`.`b`)'
|
||||
DROP TABLE t1;
|
||||
SET @a:=999999999999999999999999999999999999999999999999999999999999999999999999999999999;
|
||||
SELECT @a + @a;
|
||||
|
@ -1,2 +1,18 @@
|
||||
SHOW GRANTS FOR root@invalid_host;
|
||||
ERROR 42000: There is no such grant defined for user 'root' on host 'invalid_host'
|
||||
create user test;
|
||||
create user foo;
|
||||
create role foo;
|
||||
grant foo to test;
|
||||
set role foo;
|
||||
show grants for test;
|
||||
Grants for test@%
|
||||
GRANT foo TO 'test'@'%'
|
||||
GRANT USAGE ON *.* TO 'test'@'%'
|
||||
show grants for foo;
|
||||
Grants for foo
|
||||
GRANT USAGE ON *.* TO 'foo'
|
||||
show grants for foo@'%';
|
||||
ERROR 42000: Access denied for user 'test'@'%' to database 'mysql'
|
||||
drop user test, foo;
|
||||
drop role foo;
|
||||
|
@ -1,2 +0,0 @@
|
||||
Variable_name Value
|
||||
have_crypt YES
|
@ -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_state 2
|
||||
test just_a_test IND_just_a_test_first_name_last_name 1
|
||||
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 first_name 1
|
||||
test just_a_test state 2
|
||||
test just_a_test PRIMARY 5
|
||||
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;
|
45
mysql-test/r/insert_innodb.result
Normal file
45
mysql-test/r/insert_innodb.result
Normal file
@ -0,0 +1,45 @@
|
||||
#
|
||||
# BUG#22037930: INSERT IGNORE FAILS TO IGNORE
|
||||
# FOREIGN KEY CONSTRAINT
|
||||
# Setup.
|
||||
CREATE TABLE t1 (fld1 INT PRIMARY KEY) ENGINE=INNODB;
|
||||
CREATE TABLE t2 (fld2 INT, FOREIGN KEY (fld2) REFERENCES t1 (fld1))
|
||||
ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(0);
|
||||
INSERT INTO t2 VALUES(0);
|
||||
# Without fix, an error is reported.
|
||||
INSERT IGNORE INTO t2 VALUES(1);
|
||||
Warnings:
|
||||
Warning 1452 Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`fld2`) REFERENCES `t1` (`fld1`))
|
||||
UPDATE IGNORE t2 SET fld2=20 WHERE fld2=0;
|
||||
UPDATE IGNORE t1 SET fld1=20 WHERE fld1=0;
|
||||
# Test for multi update.
|
||||
UPDATE IGNORE t1, t2 SET t2.fld2= t2.fld2 + 3;
|
||||
UPDATE IGNORE t1, t2 SET t1.fld1= t1.fld1 + 3;
|
||||
# Reports an error since IGNORE is not used.
|
||||
INSERT INTO t2 VALUES(1);
|
||||
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`fld2`) REFERENCES `t1` (`fld1`))
|
||||
UPDATE t2 SET fld2=20 WHERE fld2=0;
|
||||
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`fld2`) REFERENCES `t1` (`fld1`))
|
||||
UPDATE t1 SET fld1=20 WHERE fld1=0;
|
||||
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`))
|
||||
UPDATE t1, t2 SET t2.fld2= t2.fld2 + 3;
|
||||
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`fld2`) REFERENCES `t1` (`fld1`))
|
||||
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;
|
@ -2271,4 +2271,67 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 9
|
||||
1 SIMPLE t2 ref c c 5 const 393 Using where
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-10006: optimizer doesn't convert outer join to inner on views with WHERE clause
|
||||
#
|
||||
CREATE TABLE t1(i1 int primary key, v1 int, key(v1));
|
||||
INSERT INTO t1 VALUES (1, 1);
|
||||
INSERT INTO t1 VALUES (2, 2);
|
||||
INSERT INTO t1 VALUES (3, 3);
|
||||
INSERT INTO t1 VALUES (4, 4);
|
||||
INSERT INTO t1 VALUES (5, 3);
|
||||
INSERT INTO t1 VALUES (6, 6);
|
||||
INSERT INTO t1 VALUES (7, 7);
|
||||
INSERT INTO t1 VALUES (8, 8);
|
||||
INSERT INTO t1 VALUES (9, 9);
|
||||
CREATE TABLE t2(i2 int primary key, v2 int, key(v2));
|
||||
INSERT INTO t2 VALUES (1, 1);
|
||||
INSERT INTO t2 VALUES (2, 2);
|
||||
INSERT INTO t2 VALUES (3, 3);
|
||||
INSERT INTO t2 VALUES (4, 4);
|
||||
INSERT INTO t2 VALUES (5, 3);
|
||||
INSERT INTO t2 VALUES (6, 6);
|
||||
INSERT INTO t2 VALUES (7, 7);
|
||||
INSERT INTO t2 VALUES (8, 8);
|
||||
INSERT INTO t2 VALUES (9, 9);
|
||||
CREATE TABLE t3(i3 int primary key, v3 int, key(v3));
|
||||
INSERT INTO t3 VALUES (2, 2);
|
||||
INSERT INTO t3 VALUES (4, 4);
|
||||
INSERT INTO t3 VALUES (6, 6);
|
||||
INSERT INTO t3 VALUES (8, 8);
|
||||
# This should have a join order of t3,t1,t2 (or t3,t2,t1, the idea is that t3 is the first one)
|
||||
EXPLAIN EXTENDED
|
||||
SELECT * FROM
|
||||
(SELECT t1.i1 as i1, t1.v1 as v1,
|
||||
t2.i2 as i2, t2.v2 as v2,
|
||||
t3.i3 as i3, t3.v3 as v3
|
||||
FROM t1 JOIN t2 on t1.i1 = t2.i2
|
||||
LEFT JOIN t3 on t2.i2 = t3.i3
|
||||
) as w1
|
||||
WHERE v3 = 4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t3 ref PRIMARY,v3 v3 5 const 1 100.00
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t3.i3 1 100.00
|
||||
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t3.i3 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`i1` AS `i1`,`test`.`t1`.`v1` AS `v1`,`test`.`t2`.`i2` AS `i2`,`test`.`t2`.`v2` AS `v2`,`test`.`t3`.`i3` AS `i3`,`test`.`t3`.`v3` AS `v3` from `test`.`t1` join `test`.`t2` join `test`.`t3` where ((`test`.`t3`.`v3` = 4) and (`test`.`t1`.`i1` = `test`.`t3`.`i3`) and (`test`.`t2`.`i2` = `test`.`t3`.`i3`))
|
||||
# This should have the same join order like the query above:
|
||||
EXPLAIN EXTENDED
|
||||
SELECT * FROM
|
||||
(SELECT t1.i1 as i1, t1.v1 as v1,
|
||||
t2.i2 as i2, t2.v2 as v2,
|
||||
t3.i3 as i3, t3.v3 as v3
|
||||
FROM t1 JOIN t2 on t1.i1 = t2.i2
|
||||
LEFT JOIN t3 on t2.i2 = t3.i3
|
||||
WHERE t1.i1 = t2.i2
|
||||
AND 1 = 1
|
||||
) as w2
|
||||
WHERE v3 = 4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t3 ref PRIMARY,v3 v3 5 const 1 100.00
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t3.i3 1 100.00
|
||||
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t3.i3 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`i1` AS `i1`,`test`.`t1`.`v1` AS `v1`,`test`.`t2`.`i2` AS `i2`,`test`.`t2`.`v2` AS `v2`,`test`.`t3`.`i3` AS `i3`,`test`.`t3`.`v3` AS `v3` from `test`.`t1` join `test`.`t2` join `test`.`t3` where ((`test`.`t3`.`v3` = 4) and (`test`.`t1`.`i1` = `test`.`t3`.`i3`) and (`test`.`t2`.`i2` = `test`.`t3`.`i3`))
|
||||
drop table t1,t2,t3;
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
|
@ -2282,6 +2282,69 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 9
|
||||
1 SIMPLE t2 ref c c 5 const 393 Using where
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-10006: optimizer doesn't convert outer join to inner on views with WHERE clause
|
||||
#
|
||||
CREATE TABLE t1(i1 int primary key, v1 int, key(v1));
|
||||
INSERT INTO t1 VALUES (1, 1);
|
||||
INSERT INTO t1 VALUES (2, 2);
|
||||
INSERT INTO t1 VALUES (3, 3);
|
||||
INSERT INTO t1 VALUES (4, 4);
|
||||
INSERT INTO t1 VALUES (5, 3);
|
||||
INSERT INTO t1 VALUES (6, 6);
|
||||
INSERT INTO t1 VALUES (7, 7);
|
||||
INSERT INTO t1 VALUES (8, 8);
|
||||
INSERT INTO t1 VALUES (9, 9);
|
||||
CREATE TABLE t2(i2 int primary key, v2 int, key(v2));
|
||||
INSERT INTO t2 VALUES (1, 1);
|
||||
INSERT INTO t2 VALUES (2, 2);
|
||||
INSERT INTO t2 VALUES (3, 3);
|
||||
INSERT INTO t2 VALUES (4, 4);
|
||||
INSERT INTO t2 VALUES (5, 3);
|
||||
INSERT INTO t2 VALUES (6, 6);
|
||||
INSERT INTO t2 VALUES (7, 7);
|
||||
INSERT INTO t2 VALUES (8, 8);
|
||||
INSERT INTO t2 VALUES (9, 9);
|
||||
CREATE TABLE t3(i3 int primary key, v3 int, key(v3));
|
||||
INSERT INTO t3 VALUES (2, 2);
|
||||
INSERT INTO t3 VALUES (4, 4);
|
||||
INSERT INTO t3 VALUES (6, 6);
|
||||
INSERT INTO t3 VALUES (8, 8);
|
||||
# This should have a join order of t3,t1,t2 (or t3,t2,t1, the idea is that t3 is the first one)
|
||||
EXPLAIN EXTENDED
|
||||
SELECT * FROM
|
||||
(SELECT t1.i1 as i1, t1.v1 as v1,
|
||||
t2.i2 as i2, t2.v2 as v2,
|
||||
t3.i3 as i3, t3.v3 as v3
|
||||
FROM t1 JOIN t2 on t1.i1 = t2.i2
|
||||
LEFT JOIN t3 on t2.i2 = t3.i3
|
||||
) as w1
|
||||
WHERE v3 = 4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t3 ref PRIMARY,v3 v3 5 const 1 100.00
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t3.i3 1 100.00
|
||||
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t3.i3 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`i1` AS `i1`,`test`.`t1`.`v1` AS `v1`,`test`.`t2`.`i2` AS `i2`,`test`.`t2`.`v2` AS `v2`,`test`.`t3`.`i3` AS `i3`,`test`.`t3`.`v3` AS `v3` from `test`.`t1` join `test`.`t2` join `test`.`t3` where ((`test`.`t3`.`v3` = 4) and (`test`.`t1`.`i1` = `test`.`t3`.`i3`) and (`test`.`t2`.`i2` = `test`.`t3`.`i3`))
|
||||
# This should have the same join order like the query above:
|
||||
EXPLAIN EXTENDED
|
||||
SELECT * FROM
|
||||
(SELECT t1.i1 as i1, t1.v1 as v1,
|
||||
t2.i2 as i2, t2.v2 as v2,
|
||||
t3.i3 as i3, t3.v3 as v3
|
||||
FROM t1 JOIN t2 on t1.i1 = t2.i2
|
||||
LEFT JOIN t3 on t2.i2 = t3.i3
|
||||
WHERE t1.i1 = t2.i2
|
||||
AND 1 = 1
|
||||
) as w2
|
||||
WHERE v3 = 4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t3 ref PRIMARY,v3 v3 5 const 1 100.00
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t3.i3 1 100.00
|
||||
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t3.i3 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`i1` AS `i1`,`test`.`t1`.`v1` AS `v1`,`test`.`t2`.`i2` AS `i2`,`test`.`t2`.`v2` AS `v2`,`test`.`t3`.`i3` AS `i3`,`test`.`t3`.`v3` AS `v3` from `test`.`t1` join `test`.`t2` join `test`.`t3` where ((`test`.`t3`.`v3` = 4) and (`test`.`t1`.`i1` = `test`.`t3`.`i3`) and (`test`.`t2`.`i2` = `test`.`t3`.`i3`))
|
||||
drop table t1,t2,t3;
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
set join_cache_level=default;
|
||||
show variables like 'join_cache_level';
|
||||
|
@ -90,6 +90,45 @@ SELECT DATE_FORMAT('2001-01-07', '%w %a %W');
|
||||
DATE_FORMAT('2001-01-07', '%w %a %W')
|
||||
0 Du Duminică
|
||||
End of 5.4 tests
|
||||
SET NAMES utf8;
|
||||
SET lc_time_names=de_AT;
|
||||
SELECT monthname('2001-01-01');
|
||||
monthname('2001-01-01')
|
||||
Jänner
|
||||
SELECT monthname('2001-02-01');
|
||||
monthname('2001-02-01')
|
||||
Februar
|
||||
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
|
||||
#
|
||||
|
@ -1,5 +1,4 @@
|
||||
drop table if exists t1,t2,t3;
|
||||
drop view if exists v2,v3;
|
||||
set @@debug_dbug= 'd,opt';
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (
|
||||
f1 DATE,
|
||||
|
@ -1061,4 +1061,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
|
||||
|
@ -376,6 +376,11 @@ 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`;
|
||||
#
|
||||
#MDEV-7384 [PATCH] add PERSISENT FOR ALL option to mysqlanalyze/mysqlcheck
|
||||
#
|
||||
|
@ -126,7 +126,7 @@
|
||||
table-definition-cache 400
|
||||
-table-open-cache 431
|
||||
+table-open-cache 2000
|
||||
tc-heuristic-recover COMMIT
|
||||
tc-heuristic-recover OFF
|
||||
thread-cache-size 151
|
||||
-thread-pool-idle-timeout 60
|
||||
thread-pool-max-threads 1000
|
||||
|
@ -577,7 +577,7 @@ The following options may be given as the first argument:
|
||||
semijoin_with_cache, join_cache_incremental,
|
||||
join_cache_hashed, join_cache_bka,
|
||||
optimize_join_buffer_size, table_elimination,
|
||||
extended_keys, exists_to_in
|
||||
extended_keys, exists_to_in, orderby_uses_equalities
|
||||
--optimizer-use-condition-selectivity=#
|
||||
Controls selectivity of which conditions the optimizer
|
||||
takes into account to calculate cardinality of a partial
|
||||
@ -1065,7 +1065,7 @@ The following options may be given as the first argument:
|
||||
--table-open-cache=#
|
||||
The number of cached open tables
|
||||
--tc-heuristic-recover=name
|
||||
Decision to use in heuristic recover process. One of:
|
||||
Decision to use in heuristic recover process. One of: OFF,
|
||||
COMMIT, ROLLBACK
|
||||
--thread-cache-size=#
|
||||
How many threads we should keep in a cache for reuse.
|
||||
@ -1156,10 +1156,8 @@ bulk-insert-buffer-size 8388608
|
||||
changed-page-bitmaps ON
|
||||
character-set-client-handshake TRUE
|
||||
character-set-filesystem binary
|
||||
character-set-server latin1
|
||||
character-sets-dir MYSQL_CHARSETSDIR/
|
||||
chroot (No default value)
|
||||
collation-server latin1_swedish_ci
|
||||
completion-type NO_CHAIN
|
||||
concurrent-insert AUTO
|
||||
console FALSE
|
||||
@ -1426,7 +1424,7 @@ sysdate-is-now FALSE
|
||||
table-cache 431
|
||||
table-definition-cache 400
|
||||
table-open-cache 431
|
||||
tc-heuristic-recover COMMIT
|
||||
tc-heuristic-recover OFF
|
||||
thread-cache-size 151
|
||||
thread-pool-idle-timeout 60
|
||||
thread-pool-max-threads 1000
|
||||
|
@ -1559,7 +1559,7 @@ set names utf8;
|
||||
create table t1 (f1 varchar(10));
|
||||
insert into t1 values ('2015-12-31');
|
||||
select power( timestamp( nullif( '2002-09-08', f1 ) ), 24 ) from t1;
|
||||
ERROR 22003: DOUBLE value is out of range in 'pow(cast((case when '2002-09-08' = '2015-12-31' then NULL else '2002-09-08' end) as datetime(6)),24)'
|
||||
ERROR 22003: DOUBLE value is out of range in 'pow(cast((case when '2002-09-08' = `test`.`t1`.`f1` then NULL else '2002-09-08' end) as datetime(6)),24)'
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (f1 INT);
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
@ -1575,5 +1575,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
|
||||
#
|
||||
|
@ -228,3 +228,12 @@ connection default;
|
||||
DROP USER bug42158@localhost;
|
||||
set global sql_mode=default;
|
||||
End of 5.1 tests
|
||||
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
|
||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||
DELIMITER /*!*/;
|
||||
DELIMITER ;
|
||||
# End of log file
|
||||
ROLLBACK /* added by mysqlbinlog */;
|
||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
|
||||
|
@ -2983,3 +2983,148 @@ EXPLAIN SELECT id1 FROM t2 WHERE id2=1 AND id3=1 ORDER BY date DESC LIMIT 0,4;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref id_23_date,id_234_date id_23_date 2 const,const 3 Using where
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-8989: ORDER BY optimizer ignores equality propagation
|
||||
#
|
||||
set @tmp_8989=@@optimizer_switch;
|
||||
set optimizer_switch='orderby_uses_equalities=on';
|
||||
create table t0(a int);
|
||||
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
create table t1(a int);
|
||||
insert into t1 select A.a + B.a* 10 + C.a * 100 from t0 A, t0 B, t0 C;
|
||||
create table t2 (
|
||||
pk int primary key,
|
||||
a int, b int,
|
||||
filler char(200),
|
||||
key(a)
|
||||
);
|
||||
insert into t2 select a, 1000-a, 1000-a, repeat('abc-',50) from t1 where a<200 limit 200;
|
||||
create table t3 (
|
||||
pk int primary key,
|
||||
a int, b int,
|
||||
filler char(200),
|
||||
key(a)
|
||||
);
|
||||
insert into t3 select a, 1000-a, 1000-a, repeat('abc-',50) from t1;
|
||||
insert into t3 select a+1000, 1000+a, 1000+a, repeat('abc-',50) from t1;
|
||||
# The optimizer produces an order of 't2,t3' for this join
|
||||
#
|
||||
# Case #1 (from the bug report):
|
||||
# Q1 can take advantage of t2.a to resolve ORDER BY limit w/o sorting
|
||||
explain
|
||||
select t2.pk,t2.a,t2.b,t3.pk,t3.a,t3.b
|
||||
from t2, t3 where t2.a=t3.a order by t2.a limit 5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index a a 5 NULL 5 Using where
|
||||
1 SIMPLE t3 ref a a 5 test.t2.a 1
|
||||
#
|
||||
# This is Q2 which used to have "Using temporary; using filesort" but
|
||||
# has the same query plan as Q1:
|
||||
#
|
||||
explain
|
||||
select t2.pk,t2.a,t2.b,t3.pk,t3.a,t3.b
|
||||
from t2, t3 where t2.a=t3.a order by t3.a limit 5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index a a 5 NULL 5 Using where
|
||||
1 SIMPLE t3 ref a a 5 test.t2.a 1
|
||||
select t2.pk,t2.a,t2.b,t3.pk,t3.a,t3.b
|
||||
from t2, t3 where t2.a=t3.a order by t2.a limit 5;
|
||||
pk a b pk a b
|
||||
199 801 801 199 801 801
|
||||
198 802 802 198 802 802
|
||||
197 803 803 197 803 803
|
||||
196 804 804 196 804 804
|
||||
195 805 805 195 805 805
|
||||
select t2.pk,t2.a,t2.b,t3.pk,t3.a,t3.b
|
||||
from t2, t3 where t2.a=t3.a order by t3.a limit 5;
|
||||
pk a b pk a b
|
||||
199 801 801 199 801 801
|
||||
198 802 802 198 802 802
|
||||
197 803 803 197 803 803
|
||||
196 804 804 196 804 804
|
||||
195 805 805 195 805 805
|
||||
#
|
||||
# Case #2: here, only "Using temporary" is removed. "Using filesort" remains.
|
||||
#
|
||||
explain
|
||||
select t2.pk,t2.a,t2.b,t3.pk,t3.a,t3.b
|
||||
from t2, t3 where t2.a=t3.a order by t2.a limit 25;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL a NULL NULL NULL 200 Using where; Using filesort
|
||||
1 SIMPLE t3 ref a a 5 test.t2.a 1
|
||||
explain
|
||||
select t2.pk,t2.a,t2.b,t3.pk,t3.a,t3.b
|
||||
from t2, t3 where t2.a=t3.a order by t3.a limit 25;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL a NULL NULL NULL 200 Using where; Using filesort
|
||||
1 SIMPLE t3 ref a a 5 test.t2.a 1
|
||||
select t2.pk,t2.a,t2.b,t3.pk,t3.a,t3.b
|
||||
from t2, t3 where t2.a=t3.a order by t2.a limit 25;
|
||||
pk a b pk a b
|
||||
199 801 801 199 801 801
|
||||
198 802 802 198 802 802
|
||||
197 803 803 197 803 803
|
||||
196 804 804 196 804 804
|
||||
195 805 805 195 805 805
|
||||
194 806 806 194 806 806
|
||||
193 807 807 193 807 807
|
||||
192 808 808 192 808 808
|
||||
191 809 809 191 809 809
|
||||
190 810 810 190 810 810
|
||||
189 811 811 189 811 811
|
||||
188 812 812 188 812 812
|
||||
187 813 813 187 813 813
|
||||
186 814 814 186 814 814
|
||||
185 815 815 185 815 815
|
||||
184 816 816 184 816 816
|
||||
183 817 817 183 817 817
|
||||
182 818 818 182 818 818
|
||||
181 819 819 181 819 819
|
||||
180 820 820 180 820 820
|
||||
179 821 821 179 821 821
|
||||
178 822 822 178 822 822
|
||||
177 823 823 177 823 823
|
||||
176 824 824 176 824 824
|
||||
175 825 825 175 825 825
|
||||
select t2.pk,t2.a,t2.b,t3.pk,t3.a,t3.b
|
||||
from t2, t3 where t2.a=t3.a order by t3.a limit 25;
|
||||
pk a b pk a b
|
||||
199 801 801 199 801 801
|
||||
198 802 802 198 802 802
|
||||
197 803 803 197 803 803
|
||||
196 804 804 196 804 804
|
||||
195 805 805 195 805 805
|
||||
194 806 806 194 806 806
|
||||
193 807 807 193 807 807
|
||||
192 808 808 192 808 808
|
||||
191 809 809 191 809 809
|
||||
190 810 810 190 810 810
|
||||
189 811 811 189 811 811
|
||||
188 812 812 188 812 812
|
||||
187 813 813 187 813 813
|
||||
186 814 814 186 814 814
|
||||
185 815 815 185 815 815
|
||||
184 816 816 184 816 816
|
||||
183 817 817 183 817 817
|
||||
182 818 818 182 818 818
|
||||
181 819 819 181 819 819
|
||||
180 820 820 180 820 820
|
||||
179 821 821 179 821 821
|
||||
178 822 822 178 822 822
|
||||
177 823 823 177 823 823
|
||||
176 824 824 176 824 824
|
||||
175 825 825 175 825 825
|
||||
#
|
||||
# Case #3: single table access (the code that decides whether we need
|
||||
# "Using temporary" is not invoked)
|
||||
#
|
||||
explain select * from t3 where b=a order by a limit 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t3 index NULL a 5 NULL 10 Using where
|
||||
# This must not use filesort. The query plan should be like the query above:
|
||||
explain select * from t3 where b=a order by b limit 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t3 index NULL a 5 NULL 10 Using where
|
||||
drop table t0,t1,t2,t3;
|
||||
set @@optimizer_switch=@tmp_8989;
|
||||
set optimizer_switch='orderby_uses_equalities=on';
|
||||
|
@ -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
|
||||
#
|
||||
|
@ -2288,5 +2288,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
|
||||
#
|
||||
|
@ -2290,6 +2290,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;
|
||||
|
@ -6,7 +6,7 @@ insert into t1 values (2,2), (1,1);
|
||||
create table t2 (a int);
|
||||
insert into t2 values (2), (3);
|
||||
set session join_cache_level=3;
|
||||
set @@debug_dbug= 'd:t:O,/tmp/trace.out';
|
||||
set @@debug_dbug= 'd,opt';
|
||||
explain select t1.b from t1,t2 where t1.b=t2.a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
|
||||
|
160
mysql-test/r/set_password_plugin-9835.result
Normal file
160
mysql-test/r/set_password_plugin-9835.result
Normal file
@ -0,0 +1,160 @@
|
||||
set global secure_auth=0;
|
||||
create user natauth@localhost identified via 'mysql_native_password' using '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29';
|
||||
create user newpass@localhost identified by password '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29';
|
||||
create user newpassnat@localhost identified via 'mysql_native_password';
|
||||
set password for newpassnat@localhost = '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29';
|
||||
create user oldauth@localhost identified with 'mysql_old_password' using '378b243e220ca493';
|
||||
create user oldpass@localhost identified by password '378b243e220ca493';
|
||||
create user oldpassold@localhost identified with 'mysql_old_password';
|
||||
set password for oldpassold@localhost = '378b243e220ca493';
|
||||
select user, host, password, plugin, authentication_string from mysql.user where user != 'root';
|
||||
user host password plugin authentication_string
|
||||
natauth localhost *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29
|
||||
newpass localhost *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29
|
||||
newpassnat localhost *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29
|
||||
oldauth localhost 378b243e220ca493
|
||||
oldpass localhost 378b243e220ca493
|
||||
oldpassold localhost 378b243e220ca493
|
||||
connect con,localhost,natauth,test,;
|
||||
select current_user();
|
||||
current_user()
|
||||
natauth@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,newpass,test,;
|
||||
select current_user();
|
||||
current_user()
|
||||
newpass@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,newpassnat,test,;
|
||||
select current_user();
|
||||
current_user()
|
||||
newpassnat@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,oldauth,test,;
|
||||
select current_user();
|
||||
current_user()
|
||||
oldauth@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,oldpass,test,;
|
||||
select current_user();
|
||||
current_user()
|
||||
oldpass@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,oldpassold,test,;
|
||||
select current_user();
|
||||
current_user()
|
||||
oldpassold@localhost
|
||||
disconnect con;
|
||||
connection default;
|
||||
flush privileges;
|
||||
connect con,localhost,natauth,test,;
|
||||
select current_user();
|
||||
current_user()
|
||||
natauth@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,newpass,test,;
|
||||
select current_user();
|
||||
current_user()
|
||||
newpass@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,newpassnat,test,;
|
||||
select current_user();
|
||||
current_user()
|
||||
newpassnat@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,oldauth,test,;
|
||||
select current_user();
|
||||
current_user()
|
||||
oldauth@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,oldpass,test,;
|
||||
select current_user();
|
||||
current_user()
|
||||
oldpass@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,oldpassold,test,;
|
||||
select current_user();
|
||||
current_user()
|
||||
oldpassold@localhost
|
||||
disconnect con;
|
||||
connection default;
|
||||
set password for natauth@localhost = PASSWORD('test2');
|
||||
set password for newpass@localhost = PASSWORD('test2');
|
||||
set password for newpassnat@localhost = PASSWORD('test2');
|
||||
set password for oldauth@localhost = PASSWORD('test2');
|
||||
set password for oldpass@localhost = PASSWORD('test2');
|
||||
set password for oldpassold@localhost = PASSWORD('test2');
|
||||
select user, host, password, plugin, authentication_string from mysql.user where user != 'root';
|
||||
user host password plugin authentication_string
|
||||
natauth localhost *7CEB3FDE5F7A9C4CE5FBE610D7D8EDA62EBE5F4E
|
||||
newpass localhost *7CEB3FDE5F7A9C4CE5FBE610D7D8EDA62EBE5F4E
|
||||
newpassnat localhost *7CEB3FDE5F7A9C4CE5FBE610D7D8EDA62EBE5F4E
|
||||
oldauth localhost *7CEB3FDE5F7A9C4CE5FBE610D7D8EDA62EBE5F4E
|
||||
oldpass localhost *7CEB3FDE5F7A9C4CE5FBE610D7D8EDA62EBE5F4E
|
||||
oldpassold localhost *7CEB3FDE5F7A9C4CE5FBE610D7D8EDA62EBE5F4E
|
||||
connect con,localhost,natauth,test2,;
|
||||
select current_user();
|
||||
current_user()
|
||||
natauth@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,newpass,test2,;
|
||||
select current_user();
|
||||
current_user()
|
||||
newpass@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,newpassnat,test2,;
|
||||
select current_user();
|
||||
current_user()
|
||||
newpassnat@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,oldauth,test2,;
|
||||
select current_user();
|
||||
current_user()
|
||||
oldauth@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,oldpass,test2,;
|
||||
select current_user();
|
||||
current_user()
|
||||
oldpass@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,oldpassold,test2,;
|
||||
select current_user();
|
||||
current_user()
|
||||
oldpassold@localhost
|
||||
disconnect con;
|
||||
connection default;
|
||||
flush privileges;
|
||||
connect con,localhost,natauth,test2,;
|
||||
select current_user();
|
||||
current_user()
|
||||
natauth@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,newpass,test2,;
|
||||
select current_user();
|
||||
current_user()
|
||||
newpass@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,newpassnat,test2,;
|
||||
select current_user();
|
||||
current_user()
|
||||
newpassnat@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,oldauth,test2,;
|
||||
select current_user();
|
||||
current_user()
|
||||
oldauth@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,oldpass,test2,;
|
||||
select current_user();
|
||||
current_user()
|
||||
oldpass@localhost
|
||||
disconnect con;
|
||||
connect con,localhost,oldpassold,test2,;
|
||||
select current_user();
|
||||
current_user()
|
||||
oldpassold@localhost
|
||||
disconnect con;
|
||||
connection default;
|
||||
drop user natauth@localhost, newpass@localhost, newpassnat@localhost;
|
||||
drop user oldauth@localhost, oldpass@localhost, oldpassold@localhost;
|
||||
set global secure_auth=default;
|
@ -1056,7 +1056,7 @@ set statement slow_query_log=default for select @@slow_query_log;
|
||||
truncate table mysql.slow_log;
|
||||
set slow_query_log= 1;
|
||||
set global log_output='TABLE';
|
||||
select sql_text from mysql.slow_log;
|
||||
select sql_text from mysql.slow_log where sql_text not like 'set @@long_query_time%';
|
||||
sql_text
|
||||
set @@long_query_time=0.01;
|
||||
#should be written
|
||||
@ -1064,7 +1064,7 @@ select sleep(0.1);
|
||||
sleep(0.1)
|
||||
0
|
||||
set @@long_query_time=@save_long_query_time;
|
||||
select sql_text from mysql.slow_log;
|
||||
select sql_text from mysql.slow_log where sql_text not like 'set @@long_query_time%';
|
||||
sql_text
|
||||
select sleep(0.1)
|
||||
#---
|
||||
@ -1072,7 +1072,7 @@ select sleep(0.1)
|
||||
set statement long_query_time=0.01 for select sleep(0.1);
|
||||
sleep(0.1)
|
||||
0
|
||||
select sql_text from mysql.slow_log;
|
||||
select sql_text from mysql.slow_log where sql_text not like 'set @@long_query_time%';
|
||||
sql_text
|
||||
select sleep(0.1)
|
||||
set statement long_query_time=0.01 for select sleep(0.1)
|
||||
@ -1083,7 +1083,7 @@ set statement slow_query_log=0 for select sleep(0.1);
|
||||
sleep(0.1)
|
||||
0
|
||||
set @@long_query_time=@save_long_query_time;
|
||||
select sql_text from mysql.slow_log;
|
||||
select sql_text from mysql.slow_log where sql_text not like 'set @@long_query_time%';
|
||||
sql_text
|
||||
select sleep(0.1)
|
||||
set statement long_query_time=0.01 for select sleep(0.1)
|
||||
@ -1092,7 +1092,7 @@ set statement long_query_time=0.01 for select sleep(0.1)
|
||||
set statement long_query_time=0.01,log_slow_filter='full_scan' for select sleep(0.1);
|
||||
sleep(0.1)
|
||||
0
|
||||
select sql_text from mysql.slow_log;
|
||||
select sql_text from mysql.slow_log where sql_text not like 'set @@long_query_time%';
|
||||
sql_text
|
||||
select sleep(0.1)
|
||||
set statement long_query_time=0.01 for select sleep(0.1)
|
||||
@ -1101,7 +1101,7 @@ set statement long_query_time=0.01 for select sleep(0.1)
|
||||
set statement long_query_time=0.01,log_slow_rate_limit=9999 for select sleep(0.1);
|
||||
sleep(0.1)
|
||||
0
|
||||
select sql_text from mysql.slow_log;
|
||||
select sql_text from mysql.slow_log where sql_text not like 'set @@long_query_time%';
|
||||
sql_text
|
||||
select sleep(0.1)
|
||||
set statement long_query_time=0.01 for select sleep(0.1)
|
||||
@ -1110,7 +1110,7 @@ set statement long_query_time=0.01 for select sleep(0.1)
|
||||
set statement long_query_time=0.01,min_examined_row_limit=50 for select sleep(0.1);
|
||||
sleep(0.1)
|
||||
0
|
||||
select sql_text from mysql.slow_log;
|
||||
select sql_text from mysql.slow_log where sql_text not like 'set @@long_query_time%';
|
||||
sql_text
|
||||
select sleep(0.1)
|
||||
set statement long_query_time=0.01 for select sleep(0.1)
|
||||
|
@ -43,12 +43,9 @@ lock tables t2 write;
|
||||
connection con1root;
|
||||
call bug9486();
|
||||
connection con2root;
|
||||
show processlist;
|
||||
Id User Host db Command Time State Info Progress
|
||||
# root localhost test Sleep # NULL 0.000
|
||||
# root localhost test Query # Waiting for table metadata lock update t1, t2 set val= 1 where id1=id2 0.000
|
||||
# root localhost test Query # init show processlist 0.000
|
||||
# root localhost test Sleep # NULL 0.000
|
||||
SELECT state,info FROM information_schema.processlist WHERE id=con1root_id;
|
||||
state info
|
||||
Waiting for table metadata lock update t1, t2 set val= 1 where id1=id2
|
||||
unlock tables;
|
||||
connection con1root;
|
||||
drop procedure bug9486;
|
||||
|
@ -2175,3 +2175,8 @@ still connected?
|
||||
still connected?
|
||||
connection default;
|
||||
disconnect ssl_con;
|
||||
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
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
#
|
||||
# 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
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
# try to connect with '--ssl-key' option using tilde home directoy
|
||||
# path substitution : should connect
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
# try to connect with '--ssl-cert' option using tilde home directoy
|
||||
# path substitution : should connect
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user