mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Merge branch '10.2' into bb-10.2-jan
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -198,6 +198,7 @@ storage/tokudb/PerconaFT/tools/tokudb_load
|
||||
storage/tokudb/PerconaFT/tools/tokuftdump
|
||||
storage/tokudb/PerconaFT/tools/tokuft_logprint
|
||||
storage/tokudb/PerconaFT/xz/
|
||||
strings/conf_to_src
|
||||
support-files/MySQL-shared-compat.spec
|
||||
support-files/binary-configure
|
||||
support-files/config.huge.ini
|
||||
|
||||
56
.travis.yml
Normal file
56
.travis.yml
Normal file
@@ -0,0 +1,56 @@
|
||||
# vim ft=yaml
|
||||
# travis-ci.org definition
|
||||
|
||||
# non-container builds don't have enough RAM to reliably compile
|
||||
sudo: required
|
||||
dist: trusty
|
||||
|
||||
language: cpp
|
||||
compiler:
|
||||
- gcc
|
||||
# - clang # See commit f38808 if you want to re-enable clang builds
|
||||
cache:
|
||||
apt:
|
||||
ccache:
|
||||
|
||||
# Timing on build an test needs to be < 50 minutes. The compile is ~4-5minutes
|
||||
# so here we group the tests such that this happens.
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages: # make sure these match debian/control contents
|
||||
- bison
|
||||
- chrpath
|
||||
- cmake
|
||||
- debhelper
|
||||
- dh-apparmor
|
||||
- dpatch
|
||||
- libaio-dev
|
||||
- libboost-dev
|
||||
- libjudy-dev
|
||||
- libncurses5-dev
|
||||
- libpam0g-dev
|
||||
- libreadline-gplv2-dev
|
||||
- libssl-dev
|
||||
- lsb-release
|
||||
- perl
|
||||
- po-debconf
|
||||
- psmisc
|
||||
- zlib1g-dev
|
||||
- libcrack2-dev # no effect as the package is disallowed on Travis-CI
|
||||
- libjemalloc-dev
|
||||
- devscripts # implicit for any build on Ubuntu
|
||||
|
||||
script:
|
||||
- ${CC} --version ; ${CXX} --version
|
||||
- cd "${TRAVIS_BUILD_DIR}"
|
||||
- env DEB_BUILD_OPTIONS="parallel=4" debian/autobake-deb.sh;
|
||||
|
||||
notifications:
|
||||
irc:
|
||||
channels:
|
||||
- "chat.freenode.net#maria"
|
||||
on_success: never # [always|never|change]
|
||||
on_failure: never
|
||||
template:
|
||||
- "%{repository}/%{branch} (%{commit} - %{author}): %{build_url}: %{message}"
|
||||
@@ -19,8 +19,6 @@
|
||||
|
||||
# Create MySQL cmake configure wrapper
|
||||
|
||||
die() { echo "$@"; exit 1; }
|
||||
|
||||
# Use a configure script that will call CMake.
|
||||
path=`dirname $0`
|
||||
cp $path/cmake_configure.sh $path/../configure
|
||||
|
||||
@@ -153,6 +153,7 @@ INCLUDE(plugin)
|
||||
INCLUDE(install_macros)
|
||||
INCLUDE(systemd)
|
||||
INCLUDE(mysql_add_executable)
|
||||
INCLUDE(crc32-vpmsum)
|
||||
|
||||
# Handle options
|
||||
OPTION(DISABLE_SHARED
|
||||
@@ -176,12 +177,16 @@ IF (WITH_ASAN)
|
||||
# gcc 4.8.1 and new versions of clang
|
||||
MY_CHECK_AND_SET_COMPILER_FLAG("-fsanitize=address -O1 -Wno-error -fPIC"
|
||||
DEBUG RELWITHDEBINFO)
|
||||
SET(HAVE_C_FSANITIZE ${HAVE_C__fsanitize_address__O1__Wno_error__fPIC})
|
||||
SET(HAVE_CXX_FSANITIZE ${HAVE_CXX__fsanitize_address__O1__Wno_error__fPIC})
|
||||
IF(HAVE_C_FSANITIZE AND HAVE_CXX_FSANITIZE)
|
||||
SET(WITH_ASAN_OK 1)
|
||||
ELSE()
|
||||
# older versions of clang
|
||||
MY_CHECK_AND_SET_COMPILER_FLAG("-faddress-sanitizer -O1 -fPIC"
|
||||
DEBUG RELWITHDEBINFO)
|
||||
SET(HAVE_C_FADDRESS ${HAVE_C__faddress_sanitizer__O1__fPIC})
|
||||
SET(HAVE_CXX_FADDRESS ${HAVE_CXX__faddress_sanitizer__O1__fPIC})
|
||||
IF(HAVE_C_FADDRESS AND HAVE_CXX_FADDRESS)
|
||||
SET(WITH_ASAN_OK 1)
|
||||
ENDIF()
|
||||
@@ -442,7 +447,7 @@ ADD_CUSTOM_TARGET(INFO_BIN ALL
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
||||
INSTALL_DOCUMENTATION(README CREDITS COPYING COPYING.LESSER COPYING.thirdparty
|
||||
INSTALL_DOCUMENTATION(README.md CREDITS COPYING COPYING.LESSER COPYING.thirdparty
|
||||
EXCEPTIONS-CLIENT COMPONENT Readme)
|
||||
# MDEV-6526 these files are not installed anymore
|
||||
#INSTALL_DOCUMENTATION(${CMAKE_BINARY_DIR}/Docs/INFO_SRC
|
||||
|
||||
30
CREDITS
30
CREDITS
@@ -1,24 +1,26 @@
|
||||
MariaDB is brought to you by the MariaDB Foundation, a non profit
|
||||
organization registered in the USA.
|
||||
|
||||
The current main members and sponsors of the MariaDB Foundation are:
|
||||
The current main sponsors of the MariaDB Foundation are:
|
||||
|
||||
MariaDB Corporation http://www.mariadb.com (2013 - 2016)
|
||||
Booking.com http://www.booking.com (2013 - 2016)
|
||||
Parallels http://www.parallels.com/products/plesk (2013 - 2016)
|
||||
Automattic http://automattic.com (2014 - 2016)
|
||||
Verkkokauppa.com http://verkkokauppa.com (2015 - 2016)
|
||||
Visma http://visma.com/ (2015 - 2016)
|
||||
Webyog http://webyog.com (2015 - 2016)
|
||||
Wikimedia Foundation http://wikimedia.org (2015 - 2016)
|
||||
Acronis http://acronis.com (2016)
|
||||
Booking.com http://www.booking.com (2013 - 2016)
|
||||
Development Bank of Singapore http://dbs.com (2016)
|
||||
MariaDB Corporation https://www.mariadb.com (2013 - 2016)
|
||||
Visma http://visma.com (2015 - 2016)
|
||||
Acronis http://acronis.com (2016)
|
||||
Nexedi https://www.nexedi.com (2016)
|
||||
Automattic https://automattic.com (2014 - 2016)
|
||||
Verkkokauppa.com https://www.verkkokauppa.com (2015 - 2016)
|
||||
Virtuozzo https://virtuozzo.com (2016)
|
||||
|
||||
For a full list of supporters and sponsors see
|
||||
For a full list of sponsors, see
|
||||
https://mariadb.org/about/supporters/
|
||||
and for individual contributors, see
|
||||
https://mariadb.org/donate/individual-sponsors/
|
||||
|
||||
You can also do this by running SHOW CONTRIBUTORS.
|
||||
You can also get the list of sponsors by running SHOW CONTRIBUTORS.
|
||||
|
||||
For all corporate memberships and sponsorships please contact the
|
||||
For all corporate sponsorships please contact the
|
||||
MariaDB Foundation Board via foundation@mariadb.org.
|
||||
|
||||
The MariaDB Foundation is responsible for the MariaDB source
|
||||
@@ -38,7 +40,7 @@ following services to the MariaDB community:
|
||||
To be able to do the above we need help from corporations and individuals!
|
||||
|
||||
You can help support MariaDB by becoming a MariaDB developer or a
|
||||
member or sponsor of the MariaDB Foundation. To donate or sponsor,
|
||||
sponsor of the MariaDB Foundation. To donate or sponsor,
|
||||
go to https://mariadb.org/donate/
|
||||
|
||||
You can get a list of all the main authors of MariaDB / MySQL by running
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
## MariaDB: drop-in replacement for MySQL
|
||||
|
||||
MariaDB is designed as a drop-in replacement of MySQL(R) with more
|
||||
features, new storage engines, fewer bugs, and better performance.
|
||||
|
||||
@@ -24,10 +26,17 @@ https://mariadb.com/kb/en/mariadb-versus-mysql-compatibility/
|
||||
As MariaDB is a full replacement of MySQL, the MySQL manual at
|
||||
http://dev.mysql.com/doc is generally applicable.
|
||||
|
||||
Help:
|
||||
-----
|
||||
|
||||
More help is available from the Maria Discuss mailing list
|
||||
https://launchpad.net/~maria-discuss
|
||||
and the #maria IRC channel on Freenode.
|
||||
|
||||
|
||||
License:
|
||||
--------
|
||||
|
||||
***************************************************************************
|
||||
|
||||
NOTE:
|
||||
@@ -42,7 +51,8 @@ and COPYING.thirdparty files.
|
||||
|
||||
***************************************************************************
|
||||
|
||||
IMPORTANT:
|
||||
Bug Reports:
|
||||
------------
|
||||
|
||||
Bug and/or error reports regarding MariaDB should be submitted at
|
||||
http://mariadb.org/jira
|
||||
@@ -53,3 +63,8 @@ The code for MariaDB, including all revision history, can be found at:
|
||||
https://github.com/MariaDB/server
|
||||
|
||||
***************************************************************************
|
||||
|
||||
Code status:
|
||||
------------
|
||||
|
||||
* [](https://travis-ci.org/MariaDB/server) travis-ci.org (10.2 branch)
|
||||
@@ -240,7 +240,7 @@ static int process_selected_tables(char *db, char **table_names, int tables);
|
||||
static int process_all_tables_in_db(char *database);
|
||||
static int process_one_db(char *database);
|
||||
static int use_db(char *database);
|
||||
static int handle_request_for_tables(char *tables, size_t length, my_bool view);
|
||||
static int handle_request_for_tables(char *, size_t, my_bool, my_bool);
|
||||
static int dbConnect(char *host, char *user,char *passwd);
|
||||
static void dbDisconnect(char *host);
|
||||
static void DBerror(MYSQL *mysql, const char *when);
|
||||
@@ -577,7 +577,7 @@ static int process_selected_tables(char *db, char **table_names, int tables)
|
||||
}
|
||||
*--end = 0;
|
||||
handle_request_for_tables(table_names_comma_sep + 1, tot_length - 1,
|
||||
opt_do_views != 0);
|
||||
opt_do_views != 0, opt_all_in_1);
|
||||
my_free(table_names_comma_sep);
|
||||
}
|
||||
else
|
||||
@@ -588,7 +588,7 @@ static int process_selected_tables(char *db, char **table_names, int tables)
|
||||
view= is_view(table);
|
||||
if (view < 0)
|
||||
continue;
|
||||
handle_request_for_tables(table, table_len, (view == 1));
|
||||
handle_request_for_tables(table, table_len, view == 1, opt_all_in_1);
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
} /* process_selected_tables */
|
||||
@@ -616,13 +616,9 @@ static char *fix_table_name(char *dest, char *src)
|
||||
*dest++= '`';
|
||||
for (; *src; src++)
|
||||
{
|
||||
switch (*src) {
|
||||
case '`': /* escape backtick character */
|
||||
if (*src == '`')
|
||||
*dest++= '`';
|
||||
/* fall through */
|
||||
default:
|
||||
*dest++= *src;
|
||||
}
|
||||
*dest++= *src;
|
||||
}
|
||||
*dest++= '`';
|
||||
|
||||
@@ -711,9 +707,9 @@ static int process_all_tables_in_db(char *database)
|
||||
*--end = 0;
|
||||
*--views_end = 0;
|
||||
if (tot_length)
|
||||
handle_request_for_tables(tables + 1, tot_length - 1, FALSE);
|
||||
handle_request_for_tables(tables + 1, tot_length - 1, FALSE, opt_all_in_1);
|
||||
if (tot_views_length)
|
||||
handle_request_for_tables(views + 1, tot_views_length - 1, TRUE);
|
||||
handle_request_for_tables(views + 1, tot_views_length - 1, TRUE, opt_all_in_1);
|
||||
my_free(tables);
|
||||
my_free(views);
|
||||
}
|
||||
@@ -739,7 +735,7 @@ static int process_all_tables_in_db(char *database)
|
||||
!strcmp(row[0], "slow_log")))
|
||||
continue; /* Skip logging tables */
|
||||
|
||||
handle_request_for_tables(row[0], fixed_name_length(row[0]), view);
|
||||
handle_request_for_tables(row[0], fixed_name_length(row[0]), view, opt_all_in_1);
|
||||
}
|
||||
}
|
||||
mysql_free_result(res);
|
||||
@@ -800,13 +796,11 @@ static int rebuild_table(char *name)
|
||||
int rc= 0;
|
||||
DBUG_ENTER("rebuild_table");
|
||||
|
||||
query= (char*)my_malloc(sizeof(char) * (12 + fixed_name_length(name) + 6 + 1),
|
||||
query= (char*)my_malloc(sizeof(char) * (12 + strlen(name) + 6 + 1),
|
||||
MYF(MY_WME));
|
||||
if (!query)
|
||||
DBUG_RETURN(1);
|
||||
ptr= strmov(query, "ALTER TABLE ");
|
||||
ptr= fix_table_name(ptr, name);
|
||||
ptr= strxmov(ptr, " FORCE", NullS);
|
||||
ptr= strxmov(query, "ALTER TABLE ", name, " FORCE", NullS);
|
||||
if (verbose >= 3)
|
||||
puts(query);
|
||||
if (mysql_real_query(sock, query, (ulong)(ptr - query)))
|
||||
@@ -870,7 +864,8 @@ static int disable_binlog()
|
||||
return run_query("SET SQL_LOG_BIN=0", 0);
|
||||
}
|
||||
|
||||
static int handle_request_for_tables(char *tables, size_t length, my_bool view)
|
||||
static int handle_request_for_tables(char *tables, size_t length,
|
||||
my_bool view, my_bool dont_quote)
|
||||
{
|
||||
char *query, *end, options[100], message[100];
|
||||
char table_name_buff[NAME_CHAR_LEN*2*2+1], *table_name;
|
||||
@@ -929,7 +924,7 @@ static int handle_request_for_tables(char *tables, size_t length, my_bool view)
|
||||
|
||||
if (!(query =(char *) my_malloc(query_size, MYF(MY_WME))))
|
||||
DBUG_RETURN(1);
|
||||
if (opt_all_in_1)
|
||||
if (dont_quote)
|
||||
{
|
||||
DBUG_ASSERT(strlen(op)+strlen(tables)+strlen(options)+8+1 <= query_size);
|
||||
|
||||
@@ -974,6 +969,13 @@ static int handle_request_for_tables(char *tables, size_t length, my_bool view)
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
static void insert_table_name(DYNAMIC_ARRAY *arr, char *in, size_t dblen)
|
||||
{
|
||||
char buf[NAME_LEN*2+2];
|
||||
in[dblen]= 0;
|
||||
my_snprintf(buf, sizeof(buf), "%`s.%`s", in, in + dblen + 1);
|
||||
insert_dynamic(arr, (uchar*) buf);
|
||||
}
|
||||
|
||||
static void print_result()
|
||||
{
|
||||
@@ -981,16 +983,13 @@ static void print_result()
|
||||
MYSQL_ROW row;
|
||||
char prev[(NAME_LEN+9)*3+2];
|
||||
char prev_alter[MAX_ALTER_STR_SIZE];
|
||||
char *db_name;
|
||||
uint length_of_db;
|
||||
size_t length_of_db= strlen(sock->db);
|
||||
uint i;
|
||||
my_bool found_error=0, table_rebuild=0;
|
||||
DYNAMIC_ARRAY *array4repair= &tables4repair;
|
||||
DBUG_ENTER("print_result");
|
||||
|
||||
res = mysql_use_result(sock);
|
||||
db_name= sock->db;
|
||||
length_of_db= strlen(db_name);
|
||||
|
||||
prev[0] = '\0';
|
||||
prev_alter[0]= 0;
|
||||
@@ -1014,16 +1013,10 @@ static void print_result()
|
||||
if (prev_alter[0])
|
||||
insert_dynamic(&alter_table_cmds, (uchar*) prev_alter);
|
||||
else
|
||||
{
|
||||
char *table_name= prev + (length_of_db+1);
|
||||
insert_dynamic(&tables4rebuild, (uchar*) table_name);
|
||||
}
|
||||
insert_table_name(&tables4rebuild, prev, length_of_db);
|
||||
}
|
||||
else
|
||||
{
|
||||
char *table_name= prev + (length_of_db+1);
|
||||
insert_dynamic(array4repair, table_name);
|
||||
}
|
||||
insert_table_name(array4repair, prev, length_of_db);
|
||||
}
|
||||
array4repair= &tables4repair;
|
||||
found_error=0;
|
||||
@@ -1068,16 +1061,10 @@ static void print_result()
|
||||
if (prev_alter[0])
|
||||
insert_dynamic(&alter_table_cmds, prev_alter);
|
||||
else
|
||||
{
|
||||
char *table_name= prev + (length_of_db+1);
|
||||
insert_dynamic(&tables4rebuild, table_name);
|
||||
}
|
||||
insert_table_name(&tables4rebuild, prev, length_of_db);
|
||||
}
|
||||
else
|
||||
{
|
||||
char *table_name= prev + (length_of_db+1);
|
||||
insert_dynamic(array4repair, table_name);
|
||||
}
|
||||
insert_table_name(array4repair, prev, length_of_db);
|
||||
}
|
||||
mysql_free_result(res);
|
||||
DBUG_VOID_RETURN;
|
||||
@@ -1222,7 +1209,7 @@ int main(int argc, char **argv)
|
||||
for (i = 0; i < tables4repair.elements ; i++)
|
||||
{
|
||||
char *name= (char*) dynamic_array_ptr(&tables4repair, i);
|
||||
handle_request_for_tables(name, fixed_name_length(name), FALSE);
|
||||
handle_request_for_tables(name, fixed_name_length(name), FALSE, TRUE);
|
||||
}
|
||||
for (i = 0; i < tables4rebuild.elements ; i++)
|
||||
rebuild_table((char*) dynamic_array_ptr(&tables4rebuild, i));
|
||||
@@ -1233,7 +1220,7 @@ int main(int argc, char **argv)
|
||||
for (i = 0; i < views4repair.elements ; i++)
|
||||
{
|
||||
char *name= (char*) dynamic_array_ptr(&views4repair, i);
|
||||
handle_request_for_tables(name, fixed_name_length(name), TRUE);
|
||||
handle_request_for_tables(name, fixed_name_length(name), TRUE, TRUE);
|
||||
}
|
||||
}
|
||||
ret= MY_TEST(first_error);
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
|
||||
/* Global Thread counter */
|
||||
uint counter= 0;
|
||||
pthread_mutex_t init_mutex;
|
||||
pthread_mutex_t counter_mutex;
|
||||
pthread_cond_t count_threshhold;
|
||||
|
||||
@@ -421,8 +422,19 @@ static MYSQL *db_connect(char *host, char *database,
|
||||
MYSQL *mysql;
|
||||
if (verbose)
|
||||
fprintf(stdout, "Connecting to %s\n", host ? host : "localhost");
|
||||
if (!(mysql= mysql_init(NULL)))
|
||||
return 0;
|
||||
if (opt_use_threads && !lock_tables)
|
||||
{
|
||||
pthread_mutex_lock(&init_mutex);
|
||||
if (!(mysql= mysql_init(NULL)))
|
||||
{
|
||||
pthread_mutex_unlock(&init_mutex);
|
||||
return 0;
|
||||
}
|
||||
pthread_mutex_unlock(&init_mutex);
|
||||
}
|
||||
else
|
||||
if (!(mysql= mysql_init(NULL)))
|
||||
return 0;
|
||||
if (opt_compress)
|
||||
mysql_options(mysql,MYSQL_OPT_COMPRESS,NullS);
|
||||
if (opt_local_file)
|
||||
@@ -614,7 +626,7 @@ error:
|
||||
pthread_cond_signal(&count_threshhold);
|
||||
pthread_mutex_unlock(&counter_mutex);
|
||||
mysql_thread_end();
|
||||
|
||||
pthread_exit(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -638,15 +650,31 @@ int main(int argc, char **argv)
|
||||
|
||||
if (opt_use_threads && !lock_tables)
|
||||
{
|
||||
pthread_t mainthread; /* Thread descriptor */
|
||||
pthread_attr_t attr; /* Thread attributes */
|
||||
char **save_argv;
|
||||
uint worker_thread_count= 0, table_count= 0, i= 0;
|
||||
pthread_t *worker_threads; /* Thread descriptor */
|
||||
pthread_attr_t attr; /* Thread attributes */
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr,
|
||||
PTHREAD_CREATE_DETACHED);
|
||||
PTHREAD_CREATE_JOINABLE);
|
||||
|
||||
pthread_mutex_init(&init_mutex, NULL);
|
||||
pthread_mutex_init(&counter_mutex, NULL);
|
||||
pthread_cond_init(&count_threshhold, NULL);
|
||||
|
||||
/* Count the number of tables. This number denotes the total number
|
||||
of threads spawn.
|
||||
*/
|
||||
save_argv= argv;
|
||||
for (table_count= 0; *argv != NULL; argv++)
|
||||
table_count++;
|
||||
argv= save_argv;
|
||||
|
||||
if (!(worker_threads= (pthread_t*) my_malloc(table_count *
|
||||
sizeof(*worker_threads),
|
||||
MYF(0))))
|
||||
return -2;
|
||||
|
||||
for (counter= 0; *argv != NULL; argv++) /* Loop through tables */
|
||||
{
|
||||
pthread_mutex_lock(&counter_mutex);
|
||||
@@ -661,15 +689,16 @@ int main(int argc, char **argv)
|
||||
counter++;
|
||||
pthread_mutex_unlock(&counter_mutex);
|
||||
/* now create the thread */
|
||||
if (pthread_create(&mainthread, &attr, worker_thread,
|
||||
(void *)*argv) != 0)
|
||||
if (pthread_create(&worker_threads[worker_thread_count], &attr,
|
||||
worker_thread, (void *)*argv) != 0)
|
||||
{
|
||||
pthread_mutex_lock(&counter_mutex);
|
||||
counter--;
|
||||
pthread_mutex_unlock(&counter_mutex);
|
||||
fprintf(stderr,"%s: Could not create thread\n",
|
||||
my_progname);
|
||||
fprintf(stderr,"%s: Could not create thread\n", my_progname);
|
||||
continue;
|
||||
}
|
||||
worker_thread_count++;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -684,9 +713,18 @@ int main(int argc, char **argv)
|
||||
pthread_cond_timedwait(&count_threshhold, &counter_mutex, &abstime);
|
||||
}
|
||||
pthread_mutex_unlock(&counter_mutex);
|
||||
pthread_mutex_destroy(&init_mutex);
|
||||
pthread_mutex_destroy(&counter_mutex);
|
||||
pthread_cond_destroy(&count_threshhold);
|
||||
pthread_attr_destroy(&attr);
|
||||
|
||||
for(i= 0; i < worker_thread_count; i++)
|
||||
{
|
||||
if (pthread_join(worker_threads[i], NULL))
|
||||
fprintf(stderr,"%s: Could not join worker thread.\n", my_progname);
|
||||
}
|
||||
|
||||
my_free(worker_threads);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -121,7 +121,7 @@ static my_bool tty_password= 0;
|
||||
static my_bool opt_mark_progress= 0;
|
||||
static my_bool ps_protocol= 0, ps_protocol_enabled= 0;
|
||||
static my_bool sp_protocol= 0, sp_protocol_enabled= 0;
|
||||
static my_bool view_protocol= 0, view_protocol_enabled= 0, wait_longer= 0;
|
||||
static my_bool view_protocol= 0, view_protocol_enabled= 0;
|
||||
static my_bool cursor_protocol= 0, cursor_protocol_enabled= 0;
|
||||
static my_bool parsing_disabled= 0;
|
||||
static my_bool display_result_vertically= FALSE, display_result_lower= FALSE,
|
||||
@@ -181,6 +181,7 @@ static uint my_end_arg= 0;
|
||||
static uint opt_tail_lines= 0;
|
||||
|
||||
static uint opt_connect_timeout= 0;
|
||||
static uint opt_wait_for_pos_timeout= 0;
|
||||
|
||||
static char delimiter[MAX_DELIMITER_LENGTH]= ";";
|
||||
static uint delimiter_length= 1;
|
||||
@@ -4657,7 +4658,7 @@ void do_sync_with_master2(struct st_command *command, long offset,
|
||||
MYSQL_ROW row;
|
||||
MYSQL *mysql= cur_con->mysql;
|
||||
char query_buf[FN_REFLEN+128];
|
||||
int timeout= wait_longer ? 1500 : 300; /* seconds */
|
||||
int timeout= opt_wait_for_pos_timeout;
|
||||
|
||||
if (!master_pos.file[0])
|
||||
die("Calling 'sync_with_master' without calling 'save_master_pos'");
|
||||
@@ -5012,7 +5013,7 @@ static int my_kill(int pid, int sig)
|
||||
|
||||
void do_shutdown_server(struct st_command *command)
|
||||
{
|
||||
long timeout= wait_longer ? 60*5 : 60;
|
||||
long timeout= opt_wait_for_pos_timeout ? opt_wait_for_pos_timeout / 5 : 300;
|
||||
int pid;
|
||||
DYNAMIC_STRING ds_pidfile_name;
|
||||
MYSQL* mysql = cur_con->mysql;
|
||||
@@ -6951,9 +6952,10 @@ static struct my_option my_long_options[] =
|
||||
"Number of seconds before connection timeout.",
|
||||
&opt_connect_timeout, &opt_connect_timeout, 0, GET_UINT, REQUIRED_ARG,
|
||||
120, 0, 3600 * 12, 0, 0, 0},
|
||||
{"wait-longer-for-timeouts", 0,
|
||||
"Wait longer for timeouts. Useful when running under valgrind",
|
||||
&wait_longer, &wait_longer, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"wait_for_pos_timeout", 0,
|
||||
"Number of seconds to wait for master_pos_wait",
|
||||
&opt_wait_for_pos_timeout, &opt_wait_for_pos_timeout, 0, GET_UINT,
|
||||
REQUIRED_ARG, 300, 0, 3600 * 12, 0, 0, 0},
|
||||
{"plugin_dir", 0, "Directory for client-side plugins.",
|
||||
&opt_plugin_dir, &opt_plugin_dir, 0,
|
||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
|
||||
5
cmake/crc32-vpmsum.cmake
Normal file
5
cmake/crc32-vpmsum.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le")
|
||||
SET(HAVE_CRC32_VPMSUM 1)
|
||||
SET(CRC32_VPMSUM_LIBRARY crc32-vpmsum)
|
||||
ADD_SUBDIRECTORY(extra/crc32-vpmsum)
|
||||
ENDIF()
|
||||
@@ -26,7 +26,7 @@ ENDIF()
|
||||
OPTION(WITH_WSREP "WSREP replication API (to use, e.g. Galera Replication library)" ${with_wsrep_default})
|
||||
|
||||
# Set the patch version
|
||||
SET(WSREP_PATCH_VERSION "13")
|
||||
SET(WSREP_PATCH_VERSION "16")
|
||||
|
||||
# Obtain wsrep API version
|
||||
FILE(STRINGS "${MySQL_SOURCE_DIR}/wsrep/wsrep_api.h" WSREP_API_VERSION
|
||||
|
||||
@@ -105,6 +105,8 @@
|
||||
/* Libraries */
|
||||
#cmakedefine HAVE_LIBWRAP 1
|
||||
#cmakedefine HAVE_SYSTEMD 1
|
||||
#cmakedefine HAVE_CRC32_VPMSUM 1
|
||||
|
||||
/* Does "struct timespec" have a "sec" and "nsec" field? */
|
||||
#cmakedefine HAVE_TIMESPEC_TS_SEC 1
|
||||
|
||||
|
||||
@@ -1018,7 +1018,7 @@ CHECK_STRUCT_HAS_MEMBER("struct timespec" tv_sec "time.h" STRUCT_TIMESPEC_HAS_TV
|
||||
CHECK_STRUCT_HAS_MEMBER("struct timespec" tv_nsec "time.h" STRUCT_TIMESPEC_HAS_TV_NSEC)
|
||||
|
||||
IF(NOT MSVC)
|
||||
CHECK_C_SOURCE_RUNS(
|
||||
CHECK_C_SOURCE_COMPILES(
|
||||
"
|
||||
#define _GNU_SOURCE
|
||||
#include <fcntl.h>
|
||||
|
||||
14
debian/autobake-deb.sh
vendored
14
debian/autobake-deb.sh
vendored
@@ -10,10 +10,16 @@ set -e
|
||||
# Debug script and command lines
|
||||
#set -x
|
||||
|
||||
# Don't run the mysql-test-run test suite as part of build.
|
||||
# On Buildbot, don't run the mysql-test-run test suite as part of build.
|
||||
# It takes a lot of time, and we will do a better test anyway in
|
||||
# Buildbot, running the test suite from installed .debs on a clean VM.
|
||||
export DEB_BUILD_OPTIONS="nocheck"
|
||||
# On Travis-CI we want to simulate the full build, including tests.
|
||||
# Also on Travis-CI it is useful not to override the DEB_BUILD_OPTIONS
|
||||
# at this stage at all.
|
||||
if [[ ! $TRAVIS ]]
|
||||
then
|
||||
export DEB_BUILD_OPTIONS="nocheck"
|
||||
fi
|
||||
|
||||
export MARIADB_OPTIONAL_DEBS=""
|
||||
|
||||
@@ -32,8 +38,8 @@ LOGSTRING="MariaDB build"
|
||||
CODENAME="$(lsb_release -sc)"
|
||||
|
||||
# add libcrack2 (>= 2.9.0) as a build dependency
|
||||
# but only where the distribution can possibly satisfy it
|
||||
if apt-cache madison cracklib2|grep 'cracklib2 *| *2\.[0-8]\.' >/dev/null 2>&1
|
||||
# but only where the distribution can possibly satisfy it and if not on Travis-CI
|
||||
if $TRAVIS || apt-cache madison cracklib2|grep 'cracklib2 *| *2\.[0-8]\.' >/dev/null 2>&1
|
||||
then
|
||||
# Anything in MARIADB_OPTIONAL_DEBS is omitted from the resulting
|
||||
# packages by snipped in rules file
|
||||
|
||||
2
debian/mariadb-client-10.2.docs
vendored
2
debian/mariadb-client-10.2.docs
vendored
@@ -1,2 +1,2 @@
|
||||
debian/additions/innotop/changelog.innotop
|
||||
README
|
||||
README.md
|
||||
|
||||
19
debian/rules
vendored
19
debian/rules
vendored
@@ -29,20 +29,15 @@ ifeq (${MAKE_J}, -j0)
|
||||
MAKE_J = -j1
|
||||
endif
|
||||
|
||||
MAKE_TEST_TARGET=test-force
|
||||
ifneq ($(findstring fulltest,$(DEB_BUILD_OPTIONS)),)
|
||||
# make test-bt is the testsuite run by the MySQL build team
|
||||
# before a release, but it is long
|
||||
MAKE_TEST_TARGET=test-bt
|
||||
# Parallel build support as advised
|
||||
# at https://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options
|
||||
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
|
||||
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
|
||||
MAKEFLAGS += -j $(NUMJOBS)
|
||||
endif
|
||||
|
||||
USE_ASSEMBLER=--enable-assembler
|
||||
|
||||
ifneq (,$(filter $(ARCH), amd64 i386 ia64 s390))
|
||||
TESTSUITE_FAIL_CMD=exit 1
|
||||
else
|
||||
TESTSUITE_FAIL_CMD=true
|
||||
endif
|
||||
USE_ASSEMBLER=--enable-assembler
|
||||
|
||||
BUILDDIR = builddir
|
||||
builddir = $(BUILDDIR)
|
||||
@@ -88,7 +83,7 @@ build-stamp: configure
|
||||
|
||||
ifeq ($(findstring nocheck,$(DEB_BUILD_OPTIONS)),)
|
||||
if [ ! -f testsuite-stamp ] ; then \
|
||||
cd $(builddir) && $(MAKE) $(MAKE_TEST_TARGET) || $(TESTSUITE_FAIL_CMD) ; \
|
||||
cd $(builddir)/mysql-test && ./mtr --force --parallel=$(NUMJOBS) --skip-rpl --suite=main; \
|
||||
fi
|
||||
endif
|
||||
|
||||
|
||||
@@ -82,13 +82,6 @@ IF(WITH_INNOBASE_STORAGE_ENGINE OR WITH_XTRADB_STORAGE_ENGINE)
|
||||
../storage/innobase/os/os0file.cc
|
||||
)
|
||||
|
||||
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le")
|
||||
enable_language(ASM)
|
||||
LIST(APPEND INNOBASE_SOURCES
|
||||
../storage/innobase/ut/crc32_power8/crc32.S
|
||||
../storage/innobase/ut/crc32_power8/crc32_wrapper.c
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(innochecksum innochecksum.cc ${INNOBASE_SOURCES})
|
||||
TARGET_LINK_LIBRARIES(innochecksum mysys mysys_ssl)
|
||||
|
||||
2
extra/crc32-vpmsum/CMakeLists.txt
Normal file
2
extra/crc32-vpmsum/CMakeLists.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
ENABLE_LANGUAGE(ASM)
|
||||
ADD_CONVENIENCE_LIBRARY(${CRC32_VPMSUM_LIBRARY} crc32c.S crc32c_wrapper.c crc32ieee.S crc32ieee_wrapper.c)
|
||||
@@ -46,19 +46,8 @@
|
||||
/* byte reverse permute constant */
|
||||
.octa 0x0F0E0D0C0B0A09080706050403020100
|
||||
|
||||
#define __ASSEMBLY__
|
||||
#include "crc32_constants.h"
|
||||
|
||||
.text
|
||||
|
||||
#if defined(__BIG_ENDIAN__) && defined(REFLECT)
|
||||
#define BYTESWAP_DATA
|
||||
#elif defined(__LITTLE_ENDIAN__) && !defined(REFLECT)
|
||||
#define BYTESWAP_DATA
|
||||
#else
|
||||
#undef BYTESWAP_DATA
|
||||
#endif
|
||||
|
||||
#define off16 r25
|
||||
#define off32 r26
|
||||
#define off48 r27
|
||||
@@ -82,7 +71,7 @@
|
||||
#endif
|
||||
|
||||
/* unsigned int __crc32_vpmsum(unsigned int crc, void *p, unsigned long len) */
|
||||
FUNC_START(__crc32_vpmsum)
|
||||
FUNC_START(__F)
|
||||
std r31,-8(r1)
|
||||
std r30,-16(r1)
|
||||
std r29,-24(r1)
|
||||
@@ -126,19 +115,14 @@ FUNC_START(__crc32_vpmsum)
|
||||
/* Get the initial value into v8 */
|
||||
vxor v8,v8,v8
|
||||
MTVRD(v8, r3)
|
||||
#ifdef REFLECT
|
||||
vsldoi v8,zeroes,v8,8 /* shift into bottom 32 bits */
|
||||
#else
|
||||
vsldoi v8,v8,zeroes,4 /* shift into top 32 bits */
|
||||
#endif
|
||||
|
||||
#ifdef BYTESWAP_DATA
|
||||
vsldoi v8,zeroes,v8,8 /* shift into bottom 32 bits */
|
||||
|
||||
addis r3,r2,.byteswap_constant@toc@ha
|
||||
addi r3,r3,.byteswap_constant@toc@l
|
||||
|
||||
lvx byteswap,0,r3
|
||||
addi r3,r3,16
|
||||
#endif
|
||||
|
||||
cmpdi r5,256
|
||||
blt .Lshort
|
||||
@@ -170,8 +154,8 @@ FUNC_START(__crc32_vpmsum)
|
||||
addi r7,r7,-1
|
||||
mtctr r7
|
||||
|
||||
addis r3,r2,.constants@toc@ha
|
||||
addi r3,r3,.constants@toc@l
|
||||
addis r3,r2,CONSTANTS@toc@ha
|
||||
addi r3,r3,CONSTANTS@toc@l
|
||||
|
||||
/* Find the start of our constants */
|
||||
add r3,r3,r8
|
||||
@@ -376,7 +360,6 @@ FUNC_START(__crc32_vpmsum)
|
||||
vxor v6,v6,v14
|
||||
vxor v7,v7,v15
|
||||
|
||||
#ifdef REFLECT
|
||||
/*
|
||||
* vpmsumd produces a 96 bit result in the least significant bits
|
||||
* of the register. Since we are bit reflected we have to shift it
|
||||
@@ -391,7 +374,6 @@ FUNC_START(__crc32_vpmsum)
|
||||
vsldoi v5,v5,zeroes,4
|
||||
vsldoi v6,v6,zeroes,4
|
||||
vsldoi v7,v7,zeroes,4
|
||||
#endif
|
||||
|
||||
/* xor with last 1024 bits */
|
||||
lvx v8,0,r4
|
||||
@@ -526,8 +508,8 @@ FUNC_START(__crc32_vpmsum)
|
||||
|
||||
.Lbarrett_reduction:
|
||||
/* Barrett constants */
|
||||
addis r3,r2,.barrett_constants@toc@ha
|
||||
addi r3,r3,.barrett_constants@toc@l
|
||||
addis r3,r2,BARRETT_CONSTANTS@toc@ha
|
||||
addi r3,r3,BARRETT_CONSTANTS@toc@l
|
||||
|
||||
lvx const1,0,r3
|
||||
lvx const2,off16,r3
|
||||
@@ -535,33 +517,12 @@ FUNC_START(__crc32_vpmsum)
|
||||
vsldoi v1,v0,v0,8
|
||||
vxor v0,v0,v1 /* xor two 64 bit results together */
|
||||
|
||||
#ifdef REFLECT
|
||||
/* shift left one bit */
|
||||
vspltisb v1,1
|
||||
vsl v0,v0,v1
|
||||
#endif
|
||||
|
||||
vand v0,v0,mask_64bit
|
||||
|
||||
#ifndef REFLECT
|
||||
/*
|
||||
* Now for the Barrett reduction algorithm. The idea is to calculate q,
|
||||
* the multiple of our polynomial that we need to subtract. By
|
||||
* doing the computation 2x bits higher (ie 64 bits) and shifting the
|
||||
* result back down 2x bits, we round down to the nearest multiple.
|
||||
*/
|
||||
VPMSUMD(v1,v0,const1) /* ma */
|
||||
vsldoi v1,zeroes,v1,8 /* q = floor(ma/(2^64)) */
|
||||
VPMSUMD(v1,v1,const2) /* qn */
|
||||
vxor v0,v0,v1 /* a - qn, subtraction is xor in GF(2) */
|
||||
|
||||
/*
|
||||
* Get the result into r3. We need to shift it left 8 bytes:
|
||||
* V0 [ 0 1 2 X ]
|
||||
* V0 [ 0 X 2 3 ]
|
||||
*/
|
||||
vsldoi v0,v0,zeroes,8 /* shift result into top 64 bits */
|
||||
#else
|
||||
/*
|
||||
* The reflected version of Barrett reduction. Instead of bit
|
||||
* reflecting our data (which is expensive to do), we bit reflect our
|
||||
@@ -582,7 +543,6 @@ FUNC_START(__crc32_vpmsum)
|
||||
* V0 [ 0 X 2 3 ]
|
||||
*/
|
||||
vsldoi v0,v0,zeroes,4 /* shift result into top 64 bits of */
|
||||
#endif
|
||||
|
||||
.Lout:
|
||||
subi r6,r1,56+10*16
|
||||
@@ -631,8 +591,8 @@ FUNC_START(__crc32_vpmsum)
|
||||
cmpdi r5,0
|
||||
beq .Lzero
|
||||
|
||||
addis r3,r2,.short_constants@toc@ha
|
||||
addi r3,r3,.short_constants@toc@l
|
||||
addis r3,r2,SHORT_CONSTANTS@toc@ha
|
||||
addi r3,r3,SHORT_CONSTANTS@toc@l
|
||||
|
||||
/* Calculate where in the constant table we need to start */
|
||||
subfic r6,r5,256
|
||||
@@ -767,9 +727,8 @@ FUNC_START(__crc32_vpmsum)
|
||||
|
||||
.Lzero:
|
||||
mr r3,r10
|
||||
blr
|
||||
b .Lout
|
||||
|
||||
FUNC_END(__crc32_vpmsum)
|
||||
FUNC_END(__F)
|
||||
|
||||
#endif /* __powerpc__ */
|
||||
@@ -1,12 +1,9 @@
|
||||
#ifdef __powerpc__
|
||||
|
||||
#define CRC_TABLE
|
||||
#include "crc32_constants.h"
|
||||
|
||||
#define VMX_ALIGN 16
|
||||
#define VMX_ALIGN_MASK (VMX_ALIGN-1)
|
||||
|
||||
#ifdef REFLECT
|
||||
static unsigned int crc32_align(unsigned int crc, unsigned char *p,
|
||||
unsigned long len)
|
||||
{
|
||||
@@ -14,28 +11,17 @@ static unsigned int crc32_align(unsigned int crc, unsigned char *p,
|
||||
crc = crc_table[(crc ^ *p++) & 0xff] ^ (crc >> 8);
|
||||
return crc;
|
||||
}
|
||||
#else
|
||||
static unsigned int crc32_align(unsigned int crc, unsigned char *p,
|
||||
unsigned long len)
|
||||
{
|
||||
while (len--)
|
||||
crc = crc_table[((crc >> 24) ^ *p++) & 0xff] ^ (crc << 8);
|
||||
return crc;
|
||||
}
|
||||
#endif
|
||||
|
||||
unsigned int __crc32_vpmsum(unsigned int crc, unsigned char *p,
|
||||
unsigned int __F(unsigned int crc, unsigned char *p,
|
||||
unsigned long len);
|
||||
|
||||
unsigned int crc32_vpmsum(unsigned int crc, unsigned char *p,
|
||||
unsigned int F(unsigned int crc, unsigned char *p,
|
||||
unsigned long len)
|
||||
{
|
||||
unsigned int prealign;
|
||||
unsigned int tail;
|
||||
|
||||
#ifdef CRC_XOR
|
||||
crc ^= 0xffffffff;
|
||||
#endif
|
||||
|
||||
if (len < VMX_ALIGN + VMX_ALIGN_MASK) {
|
||||
crc = crc32_align(crc, p, len);
|
||||
@@ -49,7 +35,7 @@ unsigned int crc32_vpmsum(unsigned int crc, unsigned char *p,
|
||||
p += prealign;
|
||||
}
|
||||
|
||||
crc = __crc32_vpmsum(crc, p, len & ~VMX_ALIGN_MASK);
|
||||
crc = __F(crc, p, len & ~VMX_ALIGN_MASK);
|
||||
|
||||
tail = len & VMX_ALIGN_MASK;
|
||||
if (tail) {
|
||||
@@ -58,9 +44,7 @@ unsigned int crc32_vpmsum(unsigned int crc, unsigned char *p,
|
||||
}
|
||||
|
||||
out:
|
||||
#ifdef CRC_XOR
|
||||
crc ^= 0xffffffff;
|
||||
#endif
|
||||
|
||||
return crc;
|
||||
}
|
||||
14
extra/crc32-vpmsum/crc32c.S
Normal file
14
extra/crc32-vpmsum/crc32c.S
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifdef __powerpc__
|
||||
|
||||
#define CONSTANTS .crc32c_constants
|
||||
#define SHORT_CONSTANTS .crc32c_short_constants
|
||||
#define BARRETT_CONSTANTS .crc32c_barrett_constants
|
||||
|
||||
#include "crc32c_constants.h"
|
||||
|
||||
#define __F __crc32c_vpmsum
|
||||
|
||||
#include "crc32.iS"
|
||||
|
||||
#endif
|
||||
|
||||
@@ -3,83 +3,10 @@
|
||||
|
||||
#ifdef __powerpc__
|
||||
|
||||
|
||||
#define CRC 0x1edc6f41
|
||||
#define CRC_XOR
|
||||
#define REFLECT
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#ifdef CRC_TABLE
|
||||
static const unsigned int crc_table[] = {
|
||||
0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4,
|
||||
0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb,
|
||||
0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b,
|
||||
0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24,
|
||||
0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b,
|
||||
0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384,
|
||||
0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54,
|
||||
0x5d1d08bf, 0xaf768bbc, 0xbc267848, 0x4e4dfb4b,
|
||||
0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a,
|
||||
0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35,
|
||||
0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5,
|
||||
0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa,
|
||||
0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45,
|
||||
0xf779deae, 0x05125dad, 0x1642ae59, 0xe4292d5a,
|
||||
0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a,
|
||||
0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595,
|
||||
0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48,
|
||||
0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957,
|
||||
0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687,
|
||||
0x0c38d26c, 0xfe53516f, 0xed03a29b, 0x1f682198,
|
||||
0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927,
|
||||
0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38,
|
||||
0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8,
|
||||
0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7,
|
||||
0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096,
|
||||
0xa65c047d, 0x5437877e, 0x4767748a, 0xb50cf789,
|
||||
0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859,
|
||||
0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46,
|
||||
0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9,
|
||||
0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6,
|
||||
0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36,
|
||||
0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, 0x2f8b6829,
|
||||
0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c,
|
||||
0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93,
|
||||
0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043,
|
||||
0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c,
|
||||
0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3,
|
||||
0x55326b08, 0xa759e80b, 0xb4091bff, 0x466298fc,
|
||||
0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c,
|
||||
0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033,
|
||||
0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652,
|
||||
0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d,
|
||||
0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d,
|
||||
0xef087a76, 0x1d63f975, 0x0e330a81, 0xfc588982,
|
||||
0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d,
|
||||
0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622,
|
||||
0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2,
|
||||
0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed,
|
||||
0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530,
|
||||
0x0417b1db, 0xf67c32d8, 0xe52cc12c, 0x1747422f,
|
||||
0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff,
|
||||
0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0,
|
||||
0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f,
|
||||
0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540,
|
||||
0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90,
|
||||
0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, 0x8dc0dd8f,
|
||||
0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee,
|
||||
0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1,
|
||||
0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321,
|
||||
0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e,
|
||||
0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81,
|
||||
0x34f4f86a, 0xc69f7b69, 0xd5cf889d, 0x27a40b9e,
|
||||
0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e,
|
||||
0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351,};
|
||||
|
||||
#endif
|
||||
#else
|
||||
#define MAX_SIZE 32768
|
||||
.constants:
|
||||
CONSTANTS:
|
||||
|
||||
/* Reduce 262144 kbits to 1024 bits */
|
||||
/* x^261120 mod p(x)` << 1, x^261184 mod p(x)` << 1 */
|
||||
@@ -847,7 +774,7 @@ static const unsigned int crc_table[] = {
|
||||
/* x^1024 mod p(x)` << 1, x^1088 mod p(x)` << 1 */
|
||||
.octa 0x0000000171fb63ce00000001609bc4b4
|
||||
|
||||
.short_constants:
|
||||
SHORT_CONSTANTS:
|
||||
|
||||
/* Reduce final 1024-2048 bits to 64 bits, shifting 32 bits to include the trailing 32 bits of zeros */
|
||||
/* x^1952 mod p(x)`, x^1984 mod p(x)`, x^2016 mod p(x)`, x^2048 mod p(x)` */
|
||||
@@ -899,12 +826,11 @@ static const unsigned int crc_table[] = {
|
||||
.octa 0x82f63b786ea2d55ca66805eb18b8ea18
|
||||
|
||||
|
||||
.barrett_constants:
|
||||
BARRETT_CONSTANTS:
|
||||
/* 33 bit reflected Barrett constant m - (4^32)/n */
|
||||
.octa 0x000000000000000000000000dea713f1 /* x^64 div p(x)` */
|
||||
/* 33 bit reflected Barrett constant n */
|
||||
.octa 0x00000000000000000000000105ec76f1
|
||||
#endif
|
||||
|
||||
#endif /* __powerpc__ */
|
||||
|
||||
78
extra/crc32-vpmsum/crc32c_wrapper.c
Normal file
78
extra/crc32-vpmsum/crc32c_wrapper.c
Normal file
@@ -0,0 +1,78 @@
|
||||
#ifdef __powerpc__
|
||||
|
||||
#define F crc32c_vpmsum
|
||||
#define __F __crc32c_vpmsum
|
||||
|
||||
#define CRC 0x1edc6f41
|
||||
|
||||
static const unsigned int crc_table[] = {
|
||||
0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4,
|
||||
0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb,
|
||||
0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b,
|
||||
0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24,
|
||||
0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b,
|
||||
0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384,
|
||||
0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54,
|
||||
0x5d1d08bf, 0xaf768bbc, 0xbc267848, 0x4e4dfb4b,
|
||||
0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a,
|
||||
0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35,
|
||||
0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5,
|
||||
0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa,
|
||||
0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45,
|
||||
0xf779deae, 0x05125dad, 0x1642ae59, 0xe4292d5a,
|
||||
0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a,
|
||||
0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595,
|
||||
0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48,
|
||||
0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957,
|
||||
0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687,
|
||||
0x0c38d26c, 0xfe53516f, 0xed03a29b, 0x1f682198,
|
||||
0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927,
|
||||
0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38,
|
||||
0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8,
|
||||
0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7,
|
||||
0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096,
|
||||
0xa65c047d, 0x5437877e, 0x4767748a, 0xb50cf789,
|
||||
0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859,
|
||||
0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46,
|
||||
0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9,
|
||||
0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6,
|
||||
0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36,
|
||||
0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, 0x2f8b6829,
|
||||
0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c,
|
||||
0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93,
|
||||
0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043,
|
||||
0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c,
|
||||
0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3,
|
||||
0x55326b08, 0xa759e80b, 0xb4091bff, 0x466298fc,
|
||||
0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c,
|
||||
0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033,
|
||||
0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652,
|
||||
0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d,
|
||||
0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d,
|
||||
0xef087a76, 0x1d63f975, 0x0e330a81, 0xfc588982,
|
||||
0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d,
|
||||
0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622,
|
||||
0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2,
|
||||
0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed,
|
||||
0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530,
|
||||
0x0417b1db, 0xf67c32d8, 0xe52cc12c, 0x1747422f,
|
||||
0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff,
|
||||
0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0,
|
||||
0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f,
|
||||
0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540,
|
||||
0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90,
|
||||
0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, 0x8dc0dd8f,
|
||||
0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee,
|
||||
0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1,
|
||||
0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321,
|
||||
0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e,
|
||||
0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81,
|
||||
0x34f4f86a, 0xc69f7b69, 0xd5cf889d, 0x27a40b9e,
|
||||
0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e,
|
||||
0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351,};
|
||||
|
||||
|
||||
#include "crc32_wrapper.ic"
|
||||
|
||||
#endif
|
||||
|
||||
14
extra/crc32-vpmsum/crc32ieee.S
Normal file
14
extra/crc32-vpmsum/crc32ieee.S
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifdef __powerpc__
|
||||
|
||||
#define CONSTANTS .crc32_constants
|
||||
#define SHORT_CONSTANTS .crc32_short_constants
|
||||
#define BARRETT_CONSTANTS .crc32_barrett_constants
|
||||
|
||||
#include "crc32ieee_constants.h"
|
||||
|
||||
#define __F __crc32ieee_vpmsum
|
||||
|
||||
#include "crc32.iS"
|
||||
|
||||
#endif
|
||||
|
||||
835
extra/crc32-vpmsum/crc32ieee_constants.h
Normal file
835
extra/crc32-vpmsum/crc32ieee_constants.h
Normal file
@@ -0,0 +1,835 @@
|
||||
#ifndef CRC32_CONSTANTS_H
|
||||
#define CRC32_CONSTANTS_H
|
||||
|
||||
#ifdef __powerpc__
|
||||
|
||||
#define MAX_SIZE 32768
|
||||
CONSTANTS:
|
||||
|
||||
/* Reduce 262144 kbits to 1024 bits */
|
||||
/* x^261120 mod p(x)` << 1, x^261184 mod p(x)` << 1 */
|
||||
.octa 0x00000001651797d20000000099ea94a8
|
||||
|
||||
/* x^260096 mod p(x)` << 1, x^260160 mod p(x)` << 1 */
|
||||
.octa 0x0000000021e0d56c00000000945a8420
|
||||
|
||||
/* x^259072 mod p(x)` << 1, x^259136 mod p(x)` << 1 */
|
||||
.octa 0x000000000f95ecaa0000000030762706
|
||||
|
||||
/* x^258048 mod p(x)` << 1, x^258112 mod p(x)` << 1 */
|
||||
.octa 0x00000001ebd224ac00000001a52fc582
|
||||
|
||||
/* x^257024 mod p(x)` << 1, x^257088 mod p(x)` << 1 */
|
||||
.octa 0x000000000ccb97ca00000001a4a7167a
|
||||
|
||||
/* x^256000 mod p(x)` << 1, x^256064 mod p(x)` << 1 */
|
||||
.octa 0x00000001006ec8a8000000000c18249a
|
||||
|
||||
/* x^254976 mod p(x)` << 1, x^255040 mod p(x)` << 1 */
|
||||
.octa 0x000000014f58f19600000000a924ae7c
|
||||
|
||||
/* x^253952 mod p(x)` << 1, x^254016 mod p(x)` << 1 */
|
||||
.octa 0x00000001a7192ca600000001e12ccc12
|
||||
|
||||
/* x^252928 mod p(x)` << 1, x^252992 mod p(x)` << 1 */
|
||||
.octa 0x000000019a64bab200000000a0b9d4ac
|
||||
|
||||
/* x^251904 mod p(x)` << 1, x^251968 mod p(x)` << 1 */
|
||||
.octa 0x0000000014f4ed2e0000000095e8ddfe
|
||||
|
||||
/* x^250880 mod p(x)` << 1, x^250944 mod p(x)` << 1 */
|
||||
.octa 0x000000011092b6a200000000233fddc4
|
||||
|
||||
/* x^249856 mod p(x)` << 1, x^249920 mod p(x)` << 1 */
|
||||
.octa 0x00000000c8a1629c00000001b4529b62
|
||||
|
||||
/* x^248832 mod p(x)` << 1, x^248896 mod p(x)` << 1 */
|
||||
.octa 0x000000017bf32e8e00000001a7fa0e64
|
||||
|
||||
/* x^247808 mod p(x)` << 1, x^247872 mod p(x)` << 1 */
|
||||
.octa 0x00000001f8cc658200000001b5334592
|
||||
|
||||
/* x^246784 mod p(x)` << 1, x^246848 mod p(x)` << 1 */
|
||||
.octa 0x000000008631ddf0000000011f8ee1b4
|
||||
|
||||
/* x^245760 mod p(x)` << 1, x^245824 mod p(x)` << 1 */
|
||||
.octa 0x000000007e5a76d0000000006252e632
|
||||
|
||||
/* x^244736 mod p(x)` << 1, x^244800 mod p(x)` << 1 */
|
||||
.octa 0x000000002b09b31c00000000ab973e84
|
||||
|
||||
/* x^243712 mod p(x)` << 1, x^243776 mod p(x)` << 1 */
|
||||
.octa 0x00000001b2df1f84000000007734f5ec
|
||||
|
||||
/* x^242688 mod p(x)` << 1, x^242752 mod p(x)` << 1 */
|
||||
.octa 0x00000001d6f56afc000000007c547798
|
||||
|
||||
/* x^241664 mod p(x)` << 1, x^241728 mod p(x)` << 1 */
|
||||
.octa 0x00000001b9b5e70c000000007ec40210
|
||||
|
||||
/* x^240640 mod p(x)` << 1, x^240704 mod p(x)` << 1 */
|
||||
.octa 0x0000000034b626d200000001ab1695a8
|
||||
|
||||
/* x^239616 mod p(x)` << 1, x^239680 mod p(x)` << 1 */
|
||||
.octa 0x000000014c53479a0000000090494bba
|
||||
|
||||
/* x^238592 mod p(x)` << 1, x^238656 mod p(x)` << 1 */
|
||||
.octa 0x00000001a6d179a400000001123fb816
|
||||
|
||||
/* x^237568 mod p(x)` << 1, x^237632 mod p(x)` << 1 */
|
||||
.octa 0x000000015abd16b400000001e188c74c
|
||||
|
||||
/* x^236544 mod p(x)` << 1, x^236608 mod p(x)` << 1 */
|
||||
.octa 0x00000000018f985200000001c2d3451c
|
||||
|
||||
/* x^235520 mod p(x)` << 1, x^235584 mod p(x)` << 1 */
|
||||
.octa 0x000000001fb3084a00000000f55cf1ca
|
||||
|
||||
/* x^234496 mod p(x)` << 1, x^234560 mod p(x)` << 1 */
|
||||
.octa 0x00000000c53dfb0400000001a0531540
|
||||
|
||||
/* x^233472 mod p(x)` << 1, x^233536 mod p(x)` << 1 */
|
||||
.octa 0x00000000e10c9ad60000000132cd7ebc
|
||||
|
||||
/* x^232448 mod p(x)` << 1, x^232512 mod p(x)` << 1 */
|
||||
.octa 0x0000000025aa994a0000000073ab7f36
|
||||
|
||||
/* x^231424 mod p(x)` << 1, x^231488 mod p(x)` << 1 */
|
||||
.octa 0x00000000fa3a74c40000000041aed1c2
|
||||
|
||||
/* x^230400 mod p(x)` << 1, x^230464 mod p(x)` << 1 */
|
||||
.octa 0x0000000033eb3f400000000136c53800
|
||||
|
||||
/* x^229376 mod p(x)` << 1, x^229440 mod p(x)` << 1 */
|
||||
.octa 0x000000017193f2960000000126835a30
|
||||
|
||||
/* x^228352 mod p(x)` << 1, x^228416 mod p(x)` << 1 */
|
||||
.octa 0x0000000043f6c86a000000006241b502
|
||||
|
||||
/* x^227328 mod p(x)` << 1, x^227392 mod p(x)` << 1 */
|
||||
.octa 0x000000016b513ec600000000d5196ad4
|
||||
|
||||
/* x^226304 mod p(x)` << 1, x^226368 mod p(x)` << 1 */
|
||||
.octa 0x00000000c8f25b4e000000009cfa769a
|
||||
|
||||
/* x^225280 mod p(x)` << 1, x^225344 mod p(x)` << 1 */
|
||||
.octa 0x00000001a45048ec00000000920e5df4
|
||||
|
||||
/* x^224256 mod p(x)` << 1, x^224320 mod p(x)` << 1 */
|
||||
.octa 0x000000000c4410040000000169dc310e
|
||||
|
||||
/* x^223232 mod p(x)` << 1, x^223296 mod p(x)` << 1 */
|
||||
.octa 0x000000000e17cad60000000009fc331c
|
||||
|
||||
/* x^222208 mod p(x)` << 1, x^222272 mod p(x)` << 1 */
|
||||
.octa 0x00000001253ae964000000010d94a81e
|
||||
|
||||
/* x^221184 mod p(x)` << 1, x^221248 mod p(x)` << 1 */
|
||||
.octa 0x00000001d7c88ebc0000000027a20ab2
|
||||
|
||||
/* x^220160 mod p(x)` << 1, x^220224 mod p(x)` << 1 */
|
||||
.octa 0x00000001e7ca913a0000000114f87504
|
||||
|
||||
/* x^219136 mod p(x)` << 1, x^219200 mod p(x)` << 1 */
|
||||
.octa 0x0000000033ed078a000000004b076d96
|
||||
|
||||
/* x^218112 mod p(x)` << 1, x^218176 mod p(x)` << 1 */
|
||||
.octa 0x00000000e1839c7800000000da4d1e74
|
||||
|
||||
/* x^217088 mod p(x)` << 1, x^217152 mod p(x)` << 1 */
|
||||
.octa 0x00000001322b267e000000001b81f672
|
||||
|
||||
/* x^216064 mod p(x)` << 1, x^216128 mod p(x)` << 1 */
|
||||
.octa 0x00000000638231b6000000009367c988
|
||||
|
||||
/* x^215040 mod p(x)` << 1, x^215104 mod p(x)` << 1 */
|
||||
.octa 0x00000001ee7f16f400000001717214ca
|
||||
|
||||
/* x^214016 mod p(x)` << 1, x^214080 mod p(x)` << 1 */
|
||||
.octa 0x0000000117d9924a000000009f47d820
|
||||
|
||||
/* x^212992 mod p(x)` << 1, x^213056 mod p(x)` << 1 */
|
||||
.octa 0x00000000e1a9e0c4000000010d9a47d2
|
||||
|
||||
/* x^211968 mod p(x)` << 1, x^212032 mod p(x)` << 1 */
|
||||
.octa 0x00000001403731dc00000000a696c58c
|
||||
|
||||
/* x^210944 mod p(x)` << 1, x^211008 mod p(x)` << 1 */
|
||||
.octa 0x00000001a5ea9682000000002aa28ec6
|
||||
|
||||
/* x^209920 mod p(x)` << 1, x^209984 mod p(x)` << 1 */
|
||||
.octa 0x0000000101c5c57800000001fe18fd9a
|
||||
|
||||
/* x^208896 mod p(x)` << 1, x^208960 mod p(x)` << 1 */
|
||||
.octa 0x00000000dddf6494000000019d4fc1ae
|
||||
|
||||
/* x^207872 mod p(x)` << 1, x^207936 mod p(x)` << 1 */
|
||||
.octa 0x00000000f1c3db2800000001ba0e3dea
|
||||
|
||||
/* x^206848 mod p(x)` << 1, x^206912 mod p(x)` << 1 */
|
||||
.octa 0x000000013112fb9c0000000074b59a5e
|
||||
|
||||
/* x^205824 mod p(x)` << 1, x^205888 mod p(x)` << 1 */
|
||||
.octa 0x00000000b680b90600000000f2b5ea98
|
||||
|
||||
/* x^204800 mod p(x)` << 1, x^204864 mod p(x)` << 1 */
|
||||
.octa 0x000000001a2829320000000187132676
|
||||
|
||||
/* x^203776 mod p(x)` << 1, x^203840 mod p(x)` << 1 */
|
||||
.octa 0x0000000089406e7e000000010a8c6ad4
|
||||
|
||||
/* x^202752 mod p(x)` << 1, x^202816 mod p(x)` << 1 */
|
||||
.octa 0x00000001def6be8c00000001e21dfe70
|
||||
|
||||
/* x^201728 mod p(x)` << 1, x^201792 mod p(x)` << 1 */
|
||||
.octa 0x000000007525872800000001da0050e4
|
||||
|
||||
/* x^200704 mod p(x)` << 1, x^200768 mod p(x)` << 1 */
|
||||
.octa 0x000000019536090a00000000772172ae
|
||||
|
||||
/* x^199680 mod p(x)` << 1, x^199744 mod p(x)` << 1 */
|
||||
.octa 0x00000000f2455bfc00000000e47724aa
|
||||
|
||||
/* x^198656 mod p(x)` << 1, x^198720 mod p(x)` << 1 */
|
||||
.octa 0x000000018c40baf4000000003cd63ac4
|
||||
|
||||
/* x^197632 mod p(x)` << 1, x^197696 mod p(x)` << 1 */
|
||||
.octa 0x000000004cd390d400000001bf47d352
|
||||
|
||||
/* x^196608 mod p(x)` << 1, x^196672 mod p(x)` << 1 */
|
||||
.octa 0x00000001e4ece95a000000018dc1d708
|
||||
|
||||
/* x^195584 mod p(x)` << 1, x^195648 mod p(x)` << 1 */
|
||||
.octa 0x000000001a3ee918000000002d4620a4
|
||||
|
||||
/* x^194560 mod p(x)` << 1, x^194624 mod p(x)` << 1 */
|
||||
.octa 0x000000007c652fb80000000058fd1740
|
||||
|
||||
/* x^193536 mod p(x)` << 1, x^193600 mod p(x)` << 1 */
|
||||
.octa 0x000000011c67842c00000000dadd9bfc
|
||||
|
||||
/* x^192512 mod p(x)` << 1, x^192576 mod p(x)` << 1 */
|
||||
.octa 0x00000000254f759c00000001ea2140be
|
||||
|
||||
/* x^191488 mod p(x)` << 1, x^191552 mod p(x)` << 1 */
|
||||
.octa 0x000000007ece94ca000000009de128ba
|
||||
|
||||
/* x^190464 mod p(x)` << 1, x^190528 mod p(x)` << 1 */
|
||||
.octa 0x0000000038f258c2000000013ac3aa8e
|
||||
|
||||
/* x^189440 mod p(x)` << 1, x^189504 mod p(x)` << 1 */
|
||||
.octa 0x00000001cdf17b000000000099980562
|
||||
|
||||
/* x^188416 mod p(x)` << 1, x^188480 mod p(x)` << 1 */
|
||||
.octa 0x000000011f882c1600000001c1579c86
|
||||
|
||||
/* x^187392 mod p(x)` << 1, x^187456 mod p(x)` << 1 */
|
||||
.octa 0x0000000100093fc80000000068dbbf94
|
||||
|
||||
/* x^186368 mod p(x)` << 1, x^186432 mod p(x)` << 1 */
|
||||
.octa 0x00000001cd684f16000000004509fb04
|
||||
|
||||
/* x^185344 mod p(x)` << 1, x^185408 mod p(x)` << 1 */
|
||||
.octa 0x000000004bc6a70a00000001202f6398
|
||||
|
||||
/* x^184320 mod p(x)` << 1, x^184384 mod p(x)` << 1 */
|
||||
.octa 0x000000004fc7e8e4000000013aea243e
|
||||
|
||||
/* x^183296 mod p(x)` << 1, x^183360 mod p(x)` << 1 */
|
||||
.octa 0x0000000130103f1c00000001b4052ae6
|
||||
|
||||
/* x^182272 mod p(x)` << 1, x^182336 mod p(x)` << 1 */
|
||||
.octa 0x0000000111b0024c00000001cd2a0ae8
|
||||
|
||||
/* x^181248 mod p(x)` << 1, x^181312 mod p(x)` << 1 */
|
||||
.octa 0x000000010b3079da00000001fe4aa8b4
|
||||
|
||||
/* x^180224 mod p(x)` << 1, x^180288 mod p(x)` << 1 */
|
||||
.octa 0x000000010192bcc200000001d1559a42
|
||||
|
||||
/* x^179200 mod p(x)` << 1, x^179264 mod p(x)` << 1 */
|
||||
.octa 0x0000000074838d5000000001f3e05ecc
|
||||
|
||||
/* x^178176 mod p(x)` << 1, x^178240 mod p(x)` << 1 */
|
||||
.octa 0x000000001b20f5200000000104ddd2cc
|
||||
|
||||
/* x^177152 mod p(x)` << 1, x^177216 mod p(x)` << 1 */
|
||||
.octa 0x0000000050c3590a000000015393153c
|
||||
|
||||
/* x^176128 mod p(x)` << 1, x^176192 mod p(x)` << 1 */
|
||||
.octa 0x00000000b41cac8e0000000057e942c6
|
||||
|
||||
/* x^175104 mod p(x)` << 1, x^175168 mod p(x)` << 1 */
|
||||
.octa 0x000000000c72cc78000000012c633850
|
||||
|
||||
/* x^174080 mod p(x)` << 1, x^174144 mod p(x)` << 1 */
|
||||
.octa 0x0000000030cdb03200000000ebcaae4c
|
||||
|
||||
/* x^173056 mod p(x)` << 1, x^173120 mod p(x)` << 1 */
|
||||
.octa 0x000000013e09fc32000000013ee532a6
|
||||
|
||||
/* x^172032 mod p(x)` << 1, x^172096 mod p(x)` << 1 */
|
||||
.octa 0x000000001ed624d200000001bf0cbc7e
|
||||
|
||||
/* x^171008 mod p(x)` << 1, x^171072 mod p(x)` << 1 */
|
||||
.octa 0x00000000781aee1a00000000d50b7a5a
|
||||
|
||||
/* x^169984 mod p(x)` << 1, x^170048 mod p(x)` << 1 */
|
||||
.octa 0x00000001c4d8348c0000000002fca6e8
|
||||
|
||||
/* x^168960 mod p(x)` << 1, x^169024 mod p(x)` << 1 */
|
||||
.octa 0x0000000057a40336000000007af40044
|
||||
|
||||
/* x^167936 mod p(x)` << 1, x^168000 mod p(x)` << 1 */
|
||||
.octa 0x00000000855449400000000016178744
|
||||
|
||||
/* x^166912 mod p(x)` << 1, x^166976 mod p(x)` << 1 */
|
||||
.octa 0x000000019cd21e80000000014c177458
|
||||
|
||||
/* x^165888 mod p(x)` << 1, x^165952 mod p(x)` << 1 */
|
||||
.octa 0x000000013eb95bc0000000011b6ddf04
|
||||
|
||||
/* x^164864 mod p(x)` << 1, x^164928 mod p(x)` << 1 */
|
||||
.octa 0x00000001dfc9fdfc00000001f3e29ccc
|
||||
|
||||
/* x^163840 mod p(x)` << 1, x^163904 mod p(x)` << 1 */
|
||||
.octa 0x00000000cd028bc20000000135ae7562
|
||||
|
||||
/* x^162816 mod p(x)` << 1, x^162880 mod p(x)` << 1 */
|
||||
.octa 0x0000000090db8c440000000190ef812c
|
||||
|
||||
/* x^161792 mod p(x)` << 1, x^161856 mod p(x)` << 1 */
|
||||
.octa 0x000000010010a4ce0000000067a2c786
|
||||
|
||||
/* x^160768 mod p(x)` << 1, x^160832 mod p(x)` << 1 */
|
||||
.octa 0x00000001c8f4c72c0000000048b9496c
|
||||
|
||||
/* x^159744 mod p(x)` << 1, x^159808 mod p(x)` << 1 */
|
||||
.octa 0x000000001c26170c000000015a422de6
|
||||
|
||||
/* x^158720 mod p(x)` << 1, x^158784 mod p(x)` << 1 */
|
||||
.octa 0x00000000e3fccf6800000001ef0e3640
|
||||
|
||||
/* x^157696 mod p(x)` << 1, x^157760 mod p(x)` << 1 */
|
||||
.octa 0x00000000d513ed2400000001006d2d26
|
||||
|
||||
/* x^156672 mod p(x)` << 1, x^156736 mod p(x)` << 1 */
|
||||
.octa 0x00000000141beada00000001170d56d6
|
||||
|
||||
/* x^155648 mod p(x)` << 1, x^155712 mod p(x)` << 1 */
|
||||
.octa 0x000000011071aea000000000a5fb613c
|
||||
|
||||
/* x^154624 mod p(x)` << 1, x^154688 mod p(x)` << 1 */
|
||||
.octa 0x000000012e19080a0000000040bbf7fc
|
||||
|
||||
/* x^153600 mod p(x)` << 1, x^153664 mod p(x)` << 1 */
|
||||
.octa 0x0000000100ecf826000000016ac3a5b2
|
||||
|
||||
/* x^152576 mod p(x)` << 1, x^152640 mod p(x)` << 1 */
|
||||
.octa 0x0000000069b0941200000000abf16230
|
||||
|
||||
/* x^151552 mod p(x)` << 1, x^151616 mod p(x)` << 1 */
|
||||
.octa 0x0000000122297bac00000001ebe23fac
|
||||
|
||||
/* x^150528 mod p(x)` << 1, x^150592 mod p(x)` << 1 */
|
||||
.octa 0x00000000e9e4b068000000008b6a0894
|
||||
|
||||
/* x^149504 mod p(x)` << 1, x^149568 mod p(x)` << 1 */
|
||||
.octa 0x000000004b38651a00000001288ea478
|
||||
|
||||
/* x^148480 mod p(x)` << 1, x^148544 mod p(x)` << 1 */
|
||||
.octa 0x00000001468360e2000000016619c442
|
||||
|
||||
/* x^147456 mod p(x)` << 1, x^147520 mod p(x)` << 1 */
|
||||
.octa 0x00000000121c24080000000086230038
|
||||
|
||||
/* x^146432 mod p(x)` << 1, x^146496 mod p(x)` << 1 */
|
||||
.octa 0x00000000da7e7d08000000017746a756
|
||||
|
||||
/* x^145408 mod p(x)` << 1, x^145472 mod p(x)` << 1 */
|
||||
.octa 0x00000001058d76520000000191b8f8f8
|
||||
|
||||
/* x^144384 mod p(x)` << 1, x^144448 mod p(x)` << 1 */
|
||||
.octa 0x000000014a098a90000000008e167708
|
||||
|
||||
/* x^143360 mod p(x)` << 1, x^143424 mod p(x)` << 1 */
|
||||
.octa 0x0000000020dbe72e0000000148b22d54
|
||||
|
||||
/* x^142336 mod p(x)` << 1, x^142400 mod p(x)` << 1 */
|
||||
.octa 0x000000011e7323e80000000044ba2c3c
|
||||
|
||||
/* x^141312 mod p(x)` << 1, x^141376 mod p(x)` << 1 */
|
||||
.octa 0x00000000d5d4bf9400000000b54d2b52
|
||||
|
||||
/* x^140288 mod p(x)` << 1, x^140352 mod p(x)` << 1 */
|
||||
.octa 0x0000000199d8746c0000000005a4fd8a
|
||||
|
||||
/* x^139264 mod p(x)` << 1, x^139328 mod p(x)` << 1 */
|
||||
.octa 0x00000000ce9ca8a00000000139f9fc46
|
||||
|
||||
/* x^138240 mod p(x)` << 1, x^138304 mod p(x)` << 1 */
|
||||
.octa 0x00000000136edece000000015a1fa824
|
||||
|
||||
/* x^137216 mod p(x)` << 1, x^137280 mod p(x)` << 1 */
|
||||
.octa 0x000000019b92a068000000000a61ae4c
|
||||
|
||||
/* x^136192 mod p(x)` << 1, x^136256 mod p(x)` << 1 */
|
||||
.octa 0x0000000071d622060000000145e9113e
|
||||
|
||||
/* x^135168 mod p(x)` << 1, x^135232 mod p(x)` << 1 */
|
||||
.octa 0x00000000dfc50158000000006a348448
|
||||
|
||||
/* x^134144 mod p(x)` << 1, x^134208 mod p(x)` << 1 */
|
||||
.octa 0x00000001517626bc000000004d80a08c
|
||||
|
||||
/* x^133120 mod p(x)` << 1, x^133184 mod p(x)` << 1 */
|
||||
.octa 0x0000000148d1e4fa000000014b6837a0
|
||||
|
||||
/* x^132096 mod p(x)` << 1, x^132160 mod p(x)` << 1 */
|
||||
.octa 0x0000000094d8266e000000016896a7fc
|
||||
|
||||
/* x^131072 mod p(x)` << 1, x^131136 mod p(x)` << 1 */
|
||||
.octa 0x00000000606c5e34000000014f187140
|
||||
|
||||
/* x^130048 mod p(x)` << 1, x^130112 mod p(x)` << 1 */
|
||||
.octa 0x000000019766beaa000000019581b9da
|
||||
|
||||
/* x^129024 mod p(x)` << 1, x^129088 mod p(x)` << 1 */
|
||||
.octa 0x00000001d80c506c00000001091bc984
|
||||
|
||||
/* x^128000 mod p(x)` << 1, x^128064 mod p(x)` << 1 */
|
||||
.octa 0x000000001e73837c000000001067223c
|
||||
|
||||
/* x^126976 mod p(x)` << 1, x^127040 mod p(x)` << 1 */
|
||||
.octa 0x0000000064d587de00000001ab16ea02
|
||||
|
||||
/* x^125952 mod p(x)` << 1, x^126016 mod p(x)` << 1 */
|
||||
.octa 0x00000000f4a507b0000000013c4598a8
|
||||
|
||||
/* x^124928 mod p(x)` << 1, x^124992 mod p(x)` << 1 */
|
||||
.octa 0x0000000040e342fc00000000b3735430
|
||||
|
||||
/* x^123904 mod p(x)` << 1, x^123968 mod p(x)` << 1 */
|
||||
.octa 0x00000001d5ad9c3a00000001bb3fc0c0
|
||||
|
||||
/* x^122880 mod p(x)` << 1, x^122944 mod p(x)` << 1 */
|
||||
.octa 0x0000000094a691a400000001570ae19c
|
||||
|
||||
/* x^121856 mod p(x)` << 1, x^121920 mod p(x)` << 1 */
|
||||
.octa 0x00000001271ecdfa00000001ea910712
|
||||
|
||||
/* x^120832 mod p(x)` << 1, x^120896 mod p(x)` << 1 */
|
||||
.octa 0x000000009e54475a0000000167127128
|
||||
|
||||
/* x^119808 mod p(x)` << 1, x^119872 mod p(x)` << 1 */
|
||||
.octa 0x00000000c9c099ee0000000019e790a2
|
||||
|
||||
/* x^118784 mod p(x)` << 1, x^118848 mod p(x)` << 1 */
|
||||
.octa 0x000000009a2f736c000000003788f710
|
||||
|
||||
/* x^117760 mod p(x)` << 1, x^117824 mod p(x)` << 1 */
|
||||
.octa 0x00000000bb9f499600000001682a160e
|
||||
|
||||
/* x^116736 mod p(x)` << 1, x^116800 mod p(x)` << 1 */
|
||||
.octa 0x00000001db688050000000007f0ebd2e
|
||||
|
||||
/* x^115712 mod p(x)` << 1, x^115776 mod p(x)` << 1 */
|
||||
.octa 0x00000000e9b10af4000000002b032080
|
||||
|
||||
/* x^114688 mod p(x)` << 1, x^114752 mod p(x)` << 1 */
|
||||
.octa 0x000000012d4545e400000000cfd1664a
|
||||
|
||||
/* x^113664 mod p(x)` << 1, x^113728 mod p(x)` << 1 */
|
||||
.octa 0x000000000361139c00000000aa1181c2
|
||||
|
||||
/* x^112640 mod p(x)` << 1, x^112704 mod p(x)` << 1 */
|
||||
.octa 0x00000001a5a1a3a800000000ddd08002
|
||||
|
||||
/* x^111616 mod p(x)` << 1, x^111680 mod p(x)` << 1 */
|
||||
.octa 0x000000006844e0b000000000e8dd0446
|
||||
|
||||
/* x^110592 mod p(x)` << 1, x^110656 mod p(x)` << 1 */
|
||||
.octa 0x00000000c3762f2800000001bbd94a00
|
||||
|
||||
/* x^109568 mod p(x)` << 1, x^109632 mod p(x)` << 1 */
|
||||
.octa 0x00000001d26287a200000000ab6cd180
|
||||
|
||||
/* x^108544 mod p(x)` << 1, x^108608 mod p(x)` << 1 */
|
||||
.octa 0x00000001f6f0bba80000000031803ce2
|
||||
|
||||
/* x^107520 mod p(x)` << 1, x^107584 mod p(x)` << 1 */
|
||||
.octa 0x000000002ffabd620000000024f40b0c
|
||||
|
||||
/* x^106496 mod p(x)` << 1, x^106560 mod p(x)` << 1 */
|
||||
.octa 0x00000000fb4516b800000001ba1d9834
|
||||
|
||||
/* x^105472 mod p(x)` << 1, x^105536 mod p(x)` << 1 */
|
||||
.octa 0x000000018cfa961c0000000104de61aa
|
||||
|
||||
/* x^104448 mod p(x)` << 1, x^104512 mod p(x)` << 1 */
|
||||
.octa 0x000000019e588d520000000113e40d46
|
||||
|
||||
/* x^103424 mod p(x)` << 1, x^103488 mod p(x)` << 1 */
|
||||
.octa 0x00000001180f0bbc00000001415598a0
|
||||
|
||||
/* x^102400 mod p(x)` << 1, x^102464 mod p(x)` << 1 */
|
||||
.octa 0x00000000e1d9177a00000000bf6c8c90
|
||||
|
||||
/* x^101376 mod p(x)` << 1, x^101440 mod p(x)` << 1 */
|
||||
.octa 0x0000000105abc27c00000001788b0504
|
||||
|
||||
/* x^100352 mod p(x)` << 1, x^100416 mod p(x)` << 1 */
|
||||
.octa 0x00000000972e4a580000000038385d02
|
||||
|
||||
/* x^99328 mod p(x)` << 1, x^99392 mod p(x)` << 1 */
|
||||
.octa 0x0000000183499a5e00000001b6c83844
|
||||
|
||||
/* x^98304 mod p(x)` << 1, x^98368 mod p(x)` << 1 */
|
||||
.octa 0x00000001c96a8cca0000000051061a8a
|
||||
|
||||
/* x^97280 mod p(x)` << 1, x^97344 mod p(x)` << 1 */
|
||||
.octa 0x00000001a1a5b60c000000017351388a
|
||||
|
||||
/* x^96256 mod p(x)` << 1, x^96320 mod p(x)` << 1 */
|
||||
.octa 0x00000000e4b6ac9c0000000132928f92
|
||||
|
||||
/* x^95232 mod p(x)` << 1, x^95296 mod p(x)` << 1 */
|
||||
.octa 0x00000001807e7f5a00000000e6b4f48a
|
||||
|
||||
/* x^94208 mod p(x)` << 1, x^94272 mod p(x)` << 1 */
|
||||
.octa 0x000000017a7e3bc80000000039d15e90
|
||||
|
||||
/* x^93184 mod p(x)` << 1, x^93248 mod p(x)` << 1 */
|
||||
.octa 0x00000000d73975da00000000312d6074
|
||||
|
||||
/* x^92160 mod p(x)` << 1, x^92224 mod p(x)` << 1 */
|
||||
.octa 0x000000017375d038000000017bbb2cc4
|
||||
|
||||
/* x^91136 mod p(x)` << 1, x^91200 mod p(x)` << 1 */
|
||||
.octa 0x00000000193680bc000000016ded3e18
|
||||
|
||||
/* x^90112 mod p(x)` << 1, x^90176 mod p(x)` << 1 */
|
||||
.octa 0x00000000999b06f600000000f1638b16
|
||||
|
||||
/* x^89088 mod p(x)` << 1, x^89152 mod p(x)` << 1 */
|
||||
.octa 0x00000001f685d2b800000001d38b9ecc
|
||||
|
||||
/* x^88064 mod p(x)` << 1, x^88128 mod p(x)` << 1 */
|
||||
.octa 0x00000001f4ecbed2000000018b8d09dc
|
||||
|
||||
/* x^87040 mod p(x)` << 1, x^87104 mod p(x)` << 1 */
|
||||
.octa 0x00000000ba16f1a000000000e7bc27d2
|
||||
|
||||
/* x^86016 mod p(x)` << 1, x^86080 mod p(x)` << 1 */
|
||||
.octa 0x0000000115aceac400000000275e1e96
|
||||
|
||||
/* x^84992 mod p(x)` << 1, x^85056 mod p(x)` << 1 */
|
||||
.octa 0x00000001aeff629200000000e2e3031e
|
||||
|
||||
/* x^83968 mod p(x)` << 1, x^84032 mod p(x)` << 1 */
|
||||
.octa 0x000000009640124c00000001041c84d8
|
||||
|
||||
/* x^82944 mod p(x)` << 1, x^83008 mod p(x)` << 1 */
|
||||
.octa 0x0000000114f41f0200000000706ce672
|
||||
|
||||
/* x^81920 mod p(x)` << 1, x^81984 mod p(x)` << 1 */
|
||||
.octa 0x000000009c5f3586000000015d5070da
|
||||
|
||||
/* x^80896 mod p(x)` << 1, x^80960 mod p(x)` << 1 */
|
||||
.octa 0x00000001878275fa0000000038f9493a
|
||||
|
||||
/* x^79872 mod p(x)` << 1, x^79936 mod p(x)` << 1 */
|
||||
.octa 0x00000000ddc42ce800000000a3348a76
|
||||
|
||||
/* x^78848 mod p(x)` << 1, x^78912 mod p(x)` << 1 */
|
||||
.octa 0x0000000181d2c73a00000001ad0aab92
|
||||
|
||||
/* x^77824 mod p(x)` << 1, x^77888 mod p(x)` << 1 */
|
||||
.octa 0x0000000141c9320a000000019e85f712
|
||||
|
||||
/* x^76800 mod p(x)` << 1, x^76864 mod p(x)` << 1 */
|
||||
.octa 0x000000015235719a000000005a871e76
|
||||
|
||||
/* x^75776 mod p(x)` << 1, x^75840 mod p(x)` << 1 */
|
||||
.octa 0x00000000be27d804000000017249c662
|
||||
|
||||
/* x^74752 mod p(x)` << 1, x^74816 mod p(x)` << 1 */
|
||||
.octa 0x000000006242d45a000000003a084712
|
||||
|
||||
/* x^73728 mod p(x)` << 1, x^73792 mod p(x)` << 1 */
|
||||
.octa 0x000000009a53638e00000000ed438478
|
||||
|
||||
/* x^72704 mod p(x)` << 1, x^72768 mod p(x)` << 1 */
|
||||
.octa 0x00000001001ecfb600000000abac34cc
|
||||
|
||||
/* x^71680 mod p(x)` << 1, x^71744 mod p(x)` << 1 */
|
||||
.octa 0x000000016d7c2d64000000005f35ef3e
|
||||
|
||||
/* x^70656 mod p(x)` << 1, x^70720 mod p(x)` << 1 */
|
||||
.octa 0x00000001d0ce46c00000000047d6608c
|
||||
|
||||
/* x^69632 mod p(x)` << 1, x^69696 mod p(x)` << 1 */
|
||||
.octa 0x0000000124c907b4000000002d01470e
|
||||
|
||||
/* x^68608 mod p(x)` << 1, x^68672 mod p(x)` << 1 */
|
||||
.octa 0x0000000018a555ca0000000158bbc7b0
|
||||
|
||||
/* x^67584 mod p(x)` << 1, x^67648 mod p(x)` << 1 */
|
||||
.octa 0x000000006b0980bc00000000c0a23e8e
|
||||
|
||||
/* x^66560 mod p(x)` << 1, x^66624 mod p(x)` << 1 */
|
||||
.octa 0x000000008bbba96400000001ebd85c88
|
||||
|
||||
/* x^65536 mod p(x)` << 1, x^65600 mod p(x)` << 1 */
|
||||
.octa 0x00000001070a5a1e000000019ee20bb2
|
||||
|
||||
/* x^64512 mod p(x)` << 1, x^64576 mod p(x)` << 1 */
|
||||
.octa 0x000000002204322a00000001acabf2d6
|
||||
|
||||
/* x^63488 mod p(x)` << 1, x^63552 mod p(x)` << 1 */
|
||||
.octa 0x00000000a27524d000000001b7963d56
|
||||
|
||||
/* x^62464 mod p(x)` << 1, x^62528 mod p(x)` << 1 */
|
||||
.octa 0x0000000020b1e4ba000000017bffa1fe
|
||||
|
||||
/* x^61440 mod p(x)` << 1, x^61504 mod p(x)` << 1 */
|
||||
.octa 0x0000000032cc27fc000000001f15333e
|
||||
|
||||
/* x^60416 mod p(x)` << 1, x^60480 mod p(x)` << 1 */
|
||||
.octa 0x0000000044dd22b8000000018593129e
|
||||
|
||||
/* x^59392 mod p(x)` << 1, x^59456 mod p(x)` << 1 */
|
||||
.octa 0x00000000dffc9e0a000000019cb32602
|
||||
|
||||
/* x^58368 mod p(x)` << 1, x^58432 mod p(x)` << 1 */
|
||||
.octa 0x00000001b7a0ed140000000142b05cc8
|
||||
|
||||
/* x^57344 mod p(x)` << 1, x^57408 mod p(x)` << 1 */
|
||||
.octa 0x00000000c784248800000001be49e7a4
|
||||
|
||||
/* x^56320 mod p(x)` << 1, x^56384 mod p(x)` << 1 */
|
||||
.octa 0x00000001c02a4fee0000000108f69d6c
|
||||
|
||||
/* x^55296 mod p(x)` << 1, x^55360 mod p(x)` << 1 */
|
||||
.octa 0x000000003c273778000000006c0971f0
|
||||
|
||||
/* x^54272 mod p(x)` << 1, x^54336 mod p(x)` << 1 */
|
||||
.octa 0x00000001d63f8894000000005b16467a
|
||||
|
||||
/* x^53248 mod p(x)` << 1, x^53312 mod p(x)` << 1 */
|
||||
.octa 0x000000006be557d600000001551a628e
|
||||
|
||||
/* x^52224 mod p(x)` << 1, x^52288 mod p(x)` << 1 */
|
||||
.octa 0x000000006a7806ea000000019e42ea92
|
||||
|
||||
/* x^51200 mod p(x)` << 1, x^51264 mod p(x)` << 1 */
|
||||
.octa 0x000000016155aa0c000000012fa83ff2
|
||||
|
||||
/* x^50176 mod p(x)` << 1, x^50240 mod p(x)` << 1 */
|
||||
.octa 0x00000000908650ac000000011ca9cde0
|
||||
|
||||
/* x^49152 mod p(x)` << 1, x^49216 mod p(x)` << 1 */
|
||||
.octa 0x00000000aa5a808400000000c8e5cd74
|
||||
|
||||
/* x^48128 mod p(x)` << 1, x^48192 mod p(x)` << 1 */
|
||||
.octa 0x0000000191bb500a0000000096c27f0c
|
||||
|
||||
/* x^47104 mod p(x)` << 1, x^47168 mod p(x)` << 1 */
|
||||
.octa 0x0000000064e9bed0000000002baed926
|
||||
|
||||
/* x^46080 mod p(x)` << 1, x^46144 mod p(x)` << 1 */
|
||||
.octa 0x000000009444f302000000017c8de8d2
|
||||
|
||||
/* x^45056 mod p(x)` << 1, x^45120 mod p(x)` << 1 */
|
||||
.octa 0x000000019db07d3c00000000d43d6068
|
||||
|
||||
/* x^44032 mod p(x)` << 1, x^44096 mod p(x)` << 1 */
|
||||
.octa 0x00000001359e3e6e00000000cb2c4b26
|
||||
|
||||
/* x^43008 mod p(x)` << 1, x^43072 mod p(x)` << 1 */
|
||||
.octa 0x00000001e4f10dd20000000145b8da26
|
||||
|
||||
/* x^41984 mod p(x)` << 1, x^42048 mod p(x)` << 1 */
|
||||
.octa 0x0000000124f5735e000000018fff4b08
|
||||
|
||||
/* x^40960 mod p(x)` << 1, x^41024 mod p(x)` << 1 */
|
||||
.octa 0x0000000124760a4c0000000150b58ed0
|
||||
|
||||
/* x^39936 mod p(x)` << 1, x^40000 mod p(x)` << 1 */
|
||||
.octa 0x000000000f1fc18600000001549f39bc
|
||||
|
||||
/* x^38912 mod p(x)` << 1, x^38976 mod p(x)` << 1 */
|
||||
.octa 0x00000000150e4cc400000000ef4d2f42
|
||||
|
||||
/* x^37888 mod p(x)` << 1, x^37952 mod p(x)` << 1 */
|
||||
.octa 0x000000002a6204e800000001b1468572
|
||||
|
||||
/* x^36864 mod p(x)` << 1, x^36928 mod p(x)` << 1 */
|
||||
.octa 0x00000000beb1d432000000013d7403b2
|
||||
|
||||
/* x^35840 mod p(x)` << 1, x^35904 mod p(x)` << 1 */
|
||||
.octa 0x0000000135f3f1f000000001a4681842
|
||||
|
||||
/* x^34816 mod p(x)` << 1, x^34880 mod p(x)` << 1 */
|
||||
.octa 0x0000000074fe22320000000167714492
|
||||
|
||||
/* x^33792 mod p(x)` << 1, x^33856 mod p(x)` << 1 */
|
||||
.octa 0x000000001ac6e2ba00000001e599099a
|
||||
|
||||
/* x^32768 mod p(x)` << 1, x^32832 mod p(x)` << 1 */
|
||||
.octa 0x0000000013fca91e00000000fe128194
|
||||
|
||||
/* x^31744 mod p(x)` << 1, x^31808 mod p(x)` << 1 */
|
||||
.octa 0x0000000183f4931e0000000077e8b990
|
||||
|
||||
/* x^30720 mod p(x)` << 1, x^30784 mod p(x)` << 1 */
|
||||
.octa 0x00000000b6d9b4e400000001a267f63a
|
||||
|
||||
/* x^29696 mod p(x)` << 1, x^29760 mod p(x)` << 1 */
|
||||
.octa 0x00000000b518865600000001945c245a
|
||||
|
||||
/* x^28672 mod p(x)` << 1, x^28736 mod p(x)` << 1 */
|
||||
.octa 0x0000000027a81a840000000149002e76
|
||||
|
||||
/* x^27648 mod p(x)` << 1, x^27712 mod p(x)` << 1 */
|
||||
.octa 0x000000012569925800000001bb8310a4
|
||||
|
||||
/* x^26624 mod p(x)` << 1, x^26688 mod p(x)` << 1 */
|
||||
.octa 0x00000001b23de796000000019ec60bcc
|
||||
|
||||
/* x^25600 mod p(x)` << 1, x^25664 mod p(x)` << 1 */
|
||||
.octa 0x00000000fe4365dc000000012d8590ae
|
||||
|
||||
/* x^24576 mod p(x)` << 1, x^24640 mod p(x)` << 1 */
|
||||
.octa 0x00000000c68f497a0000000065b00684
|
||||
|
||||
/* x^23552 mod p(x)` << 1, x^23616 mod p(x)` << 1 */
|
||||
.octa 0x00000000fbf521ee000000015e5aeadc
|
||||
|
||||
/* x^22528 mod p(x)` << 1, x^22592 mod p(x)` << 1 */
|
||||
.octa 0x000000015eac337800000000b77ff2b0
|
||||
|
||||
/* x^21504 mod p(x)` << 1, x^21568 mod p(x)` << 1 */
|
||||
.octa 0x0000000134914b900000000188da2ff6
|
||||
|
||||
/* x^20480 mod p(x)` << 1, x^20544 mod p(x)` << 1 */
|
||||
.octa 0x0000000016335cfe0000000063da929a
|
||||
|
||||
/* x^19456 mod p(x)` << 1, x^19520 mod p(x)` << 1 */
|
||||
.octa 0x000000010372d10c00000001389caa80
|
||||
|
||||
/* x^18432 mod p(x)` << 1, x^18496 mod p(x)` << 1 */
|
||||
.octa 0x000000015097b908000000013db599d2
|
||||
|
||||
/* x^17408 mod p(x)` << 1, x^17472 mod p(x)` << 1 */
|
||||
.octa 0x00000001227a75720000000122505a86
|
||||
|
||||
/* x^16384 mod p(x)` << 1, x^16448 mod p(x)` << 1 */
|
||||
.octa 0x000000009a8f75c0000000016bd72746
|
||||
|
||||
/* x^15360 mod p(x)` << 1, x^15424 mod p(x)` << 1 */
|
||||
.octa 0x00000000682c77a200000001c3faf1d4
|
||||
|
||||
/* x^14336 mod p(x)` << 1, x^14400 mod p(x)` << 1 */
|
||||
.octa 0x00000000231f091c00000001111c826c
|
||||
|
||||
/* x^13312 mod p(x)` << 1, x^13376 mod p(x)` << 1 */
|
||||
.octa 0x000000007d4439f200000000153e9fb2
|
||||
|
||||
/* x^12288 mod p(x)` << 1, x^12352 mod p(x)` << 1 */
|
||||
.octa 0x000000017e221efc000000002b1f7b60
|
||||
|
||||
/* x^11264 mod p(x)` << 1, x^11328 mod p(x)` << 1 */
|
||||
.octa 0x0000000167457c3800000000b1dba570
|
||||
|
||||
/* x^10240 mod p(x)` << 1, x^10304 mod p(x)` << 1 */
|
||||
.octa 0x00000000bdf081c400000001f6397b76
|
||||
|
||||
/* x^9216 mod p(x)` << 1, x^9280 mod p(x)` << 1 */
|
||||
.octa 0x000000016286d6b00000000156335214
|
||||
|
||||
/* x^8192 mod p(x)` << 1, x^8256 mod p(x)` << 1 */
|
||||
.octa 0x00000000c84f001c00000001d70e3986
|
||||
|
||||
/* x^7168 mod p(x)` << 1, x^7232 mod p(x)` << 1 */
|
||||
.octa 0x0000000064efe7c0000000003701a774
|
||||
|
||||
/* x^6144 mod p(x)` << 1, x^6208 mod p(x)` << 1 */
|
||||
.octa 0x000000000ac2d90400000000ac81ef72
|
||||
|
||||
/* x^5120 mod p(x)` << 1, x^5184 mod p(x)` << 1 */
|
||||
.octa 0x00000000fd226d140000000133212464
|
||||
|
||||
/* x^4096 mod p(x)` << 1, x^4160 mod p(x)` << 1 */
|
||||
.octa 0x000000011cfd42e000000000e4e45610
|
||||
|
||||
/* x^3072 mod p(x)` << 1, x^3136 mod p(x)` << 1 */
|
||||
.octa 0x000000016e5a5678000000000c1bd370
|
||||
|
||||
/* x^2048 mod p(x)` << 1, x^2112 mod p(x)` << 1 */
|
||||
.octa 0x00000001d888fe2200000001a7b9e7a6
|
||||
|
||||
/* x^1024 mod p(x)` << 1, x^1088 mod p(x)` << 1 */
|
||||
.octa 0x00000001af77fcd4000000007d657a10
|
||||
|
||||
SHORT_CONSTANTS:
|
||||
|
||||
/* Reduce final 1024-2048 bits to 64 bits, shifting 32 bits to include the trailing 32 bits of zeros */
|
||||
/* x^1952 mod p(x)`, x^1984 mod p(x)`, x^2016 mod p(x)`, x^2048 mod p(x)` */
|
||||
.octa 0xed837b2613e8221e99168a18ec447f11
|
||||
|
||||
/* x^1824 mod p(x)`, x^1856 mod p(x)`, x^1888 mod p(x)`, x^1920 mod p(x)` */
|
||||
.octa 0xc8acdd8147b9ce5ae23e954e8fd2cd3c
|
||||
|
||||
/* x^1696 mod p(x)`, x^1728 mod p(x)`, x^1760 mod p(x)`, x^1792 mod p(x)` */
|
||||
.octa 0xd9ad6d87d4277e2592f8befe6b1d2b53
|
||||
|
||||
/* x^1568 mod p(x)`, x^1600 mod p(x)`, x^1632 mod p(x)`, x^1664 mod p(x)` */
|
||||
.octa 0xc10ec5e033fbca3bf38a3556291ea462
|
||||
|
||||
/* x^1440 mod p(x)`, x^1472 mod p(x)`, x^1504 mod p(x)`, x^1536 mod p(x)` */
|
||||
.octa 0xc0b55b0e82e02e2f974ac56262b6ca4b
|
||||
|
||||
/* x^1312 mod p(x)`, x^1344 mod p(x)`, x^1376 mod p(x)`, x^1408 mod p(x)` */
|
||||
.octa 0x71aa1df0e172334d855712b3784d2a56
|
||||
|
||||
/* x^1184 mod p(x)`, x^1216 mod p(x)`, x^1248 mod p(x)`, x^1280 mod p(x)` */
|
||||
.octa 0xfee3053e3969324da5abe9f80eaee722
|
||||
|
||||
/* x^1056 mod p(x)`, x^1088 mod p(x)`, x^1120 mod p(x)`, x^1152 mod p(x)` */
|
||||
.octa 0xf44779b93eb2bd081fa0943ddb54814c
|
||||
|
||||
/* x^928 mod p(x)`, x^960 mod p(x)`, x^992 mod p(x)`, x^1024 mod p(x)` */
|
||||
.octa 0xf5449b3f00cc3374a53ff440d7bbfe6a
|
||||
|
||||
/* x^800 mod p(x)`, x^832 mod p(x)`, x^864 mod p(x)`, x^896 mod p(x)` */
|
||||
.octa 0x6f8346e1d777606eebe7e3566325605c
|
||||
|
||||
/* x^672 mod p(x)`, x^704 mod p(x)`, x^736 mod p(x)`, x^768 mod p(x)` */
|
||||
.octa 0xe3ab4f2ac0b95347c65a272ce5b592b8
|
||||
|
||||
/* x^544 mod p(x)`, x^576 mod p(x)`, x^608 mod p(x)`, x^640 mod p(x)` */
|
||||
.octa 0xaa2215ea329ecc115705a9ca4721589f
|
||||
|
||||
/* x^416 mod p(x)`, x^448 mod p(x)`, x^480 mod p(x)`, x^512 mod p(x)` */
|
||||
.octa 0x1ed8f66ed95efd26e3720acb88d14467
|
||||
|
||||
/* x^288 mod p(x)`, x^320 mod p(x)`, x^352 mod p(x)`, x^384 mod p(x)` */
|
||||
.octa 0x78ed02d5a700e96aba1aca0315141c31
|
||||
|
||||
/* x^160 mod p(x)`, x^192 mod p(x)`, x^224 mod p(x)`, x^256 mod p(x)` */
|
||||
.octa 0xba8ccbe832b39da3ad2a31b3ed627dae
|
||||
|
||||
/* x^32 mod p(x)`, x^64 mod p(x)`, x^96 mod p(x)`, x^128 mod p(x)` */
|
||||
.octa 0xedb88320b1e6b0926655004fa06a2517
|
||||
|
||||
|
||||
BARRETT_CONSTANTS:
|
||||
/* 33 bit reflected Barrett constant m - (4^32)/n */
|
||||
.octa 0x000000000000000000000001f7011641 /* x^64 div p(x)` */
|
||||
/* 33 bit reflected Barrett constant n */
|
||||
.octa 0x000000000000000000000001db710641
|
||||
|
||||
#endif /* __powerpc__ */
|
||||
|
||||
#endif
|
||||
75
extra/crc32-vpmsum/crc32ieee_wrapper.c
Normal file
75
extra/crc32-vpmsum/crc32ieee_wrapper.c
Normal file
@@ -0,0 +1,75 @@
|
||||
#ifdef __powerpc__
|
||||
|
||||
#define F crc32ieee_vpmsum
|
||||
#define __F __crc32ieee_vpmsum
|
||||
|
||||
static const unsigned int crc_table[] = {
|
||||
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
|
||||
0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
|
||||
0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
|
||||
0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
|
||||
0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
|
||||
0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
|
||||
0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
|
||||
0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
|
||||
0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
|
||||
0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
|
||||
0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
|
||||
0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
|
||||
0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
|
||||
0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
|
||||
0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
|
||||
0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
|
||||
0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
|
||||
0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
|
||||
0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
|
||||
0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
|
||||
0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
|
||||
0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
|
||||
0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
|
||||
0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
|
||||
0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
|
||||
0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
|
||||
0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
|
||||
0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
|
||||
0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
|
||||
0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
|
||||
0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
|
||||
0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
|
||||
0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
|
||||
0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
|
||||
0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
|
||||
0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
|
||||
0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
|
||||
0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
|
||||
0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
|
||||
0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
|
||||
0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
|
||||
0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
|
||||
0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
|
||||
0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
|
||||
0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
|
||||
0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
|
||||
0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
|
||||
0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
|
||||
0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
|
||||
0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
|
||||
0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
|
||||
0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
|
||||
0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
|
||||
0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
|
||||
0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
|
||||
0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
|
||||
0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
|
||||
0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
|
||||
0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
|
||||
0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
|
||||
0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
|
||||
0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
|
||||
0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
|
||||
0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,};
|
||||
|
||||
#include "crc32_wrapper.ic"
|
||||
|
||||
#endif
|
||||
|
||||
@@ -222,7 +222,7 @@ static my_bool print_win_error_msg(DWORD error, my_bool verbose)
|
||||
will ignore calls to register already registered error numbers.
|
||||
*/
|
||||
|
||||
static const char **get_handler_error_messages()
|
||||
static const char **get_handler_error_messages(int e __attribute__((unused)))
|
||||
{
|
||||
return handler_error_messages;
|
||||
}
|
||||
|
||||
@@ -362,6 +362,8 @@ struct my_collation_handler_st
|
||||
|
||||
extern MY_COLLATION_HANDLER my_collation_8bit_bin_handler;
|
||||
extern MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler;
|
||||
extern MY_COLLATION_HANDLER my_collation_8bit_nopad_bin_handler;
|
||||
extern MY_COLLATION_HANDLER my_collation_8bit_simple_nopad_ci_handler;
|
||||
extern MY_COLLATION_HANDLER my_collation_ucs2_uca_handler;
|
||||
|
||||
/* Some typedef to make it easy for C++ to make function pointers */
|
||||
@@ -585,49 +587,81 @@ struct charset_info_st
|
||||
|
||||
extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_bin;
|
||||
extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_latin1;
|
||||
extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_latin1_nopad;
|
||||
extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_filename;
|
||||
extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8_general_ci;
|
||||
|
||||
extern struct charset_info_st my_charset_big5_bin;
|
||||
extern struct charset_info_st my_charset_big5_chinese_ci;
|
||||
extern struct charset_info_st my_charset_big5_nopad_bin;
|
||||
extern struct charset_info_st my_charset_big5_chinese_nopad_ci;
|
||||
extern struct charset_info_st my_charset_cp1250_czech_ci;
|
||||
extern struct charset_info_st my_charset_cp932_bin;
|
||||
extern struct charset_info_st my_charset_cp932_japanese_ci;
|
||||
extern struct charset_info_st my_charset_cp932_nopad_bin;
|
||||
extern struct charset_info_st my_charset_cp932_japanese_nopad_ci;
|
||||
extern struct charset_info_st my_charset_eucjpms_bin;
|
||||
extern struct charset_info_st my_charset_eucjpms_japanese_ci;
|
||||
extern struct charset_info_st my_charset_eucjpms_nopad_bin;
|
||||
extern struct charset_info_st my_charset_eucjpms_japanese_nopad_ci;
|
||||
extern struct charset_info_st my_charset_euckr_bin;
|
||||
extern struct charset_info_st my_charset_euckr_korean_ci;
|
||||
extern struct charset_info_st my_charset_euckr_nopad_bin;
|
||||
extern struct charset_info_st my_charset_euckr_korean_nopad_ci;
|
||||
extern struct charset_info_st my_charset_gb2312_bin;
|
||||
extern struct charset_info_st my_charset_gb2312_chinese_ci;
|
||||
extern struct charset_info_st my_charset_gb2312_nopad_bin;
|
||||
extern struct charset_info_st my_charset_gb2312_chinese_nopad_ci;
|
||||
extern struct charset_info_st my_charset_gbk_bin;
|
||||
extern struct charset_info_st my_charset_gbk_chinese_ci;
|
||||
extern struct charset_info_st my_charset_gbk_nopad_bin;
|
||||
extern struct charset_info_st my_charset_gbk_chinese_nopad_ci;
|
||||
extern struct charset_info_st my_charset_latin1_bin;
|
||||
extern struct charset_info_st my_charset_latin1_nopad_bin;
|
||||
extern struct charset_info_st my_charset_latin1_german2_ci;
|
||||
extern struct charset_info_st my_charset_latin2_czech_ci;
|
||||
extern struct charset_info_st my_charset_sjis_bin;
|
||||
extern struct charset_info_st my_charset_sjis_japanese_ci;
|
||||
extern struct charset_info_st my_charset_sjis_nopad_bin;
|
||||
extern struct charset_info_st my_charset_sjis_japanese_nopad_ci;
|
||||
extern struct charset_info_st my_charset_tis620_bin;
|
||||
extern struct charset_info_st my_charset_tis620_thai_ci;
|
||||
extern struct charset_info_st my_charset_tis620_nopad_bin;
|
||||
extern struct charset_info_st my_charset_tis620_thai_nopad_ci;
|
||||
extern struct charset_info_st my_charset_ucs2_bin;
|
||||
extern struct charset_info_st my_charset_ucs2_general_ci;
|
||||
extern struct charset_info_st my_charset_ucs2_nopad_bin;
|
||||
extern struct charset_info_st my_charset_ucs2_general_nopad_ci;
|
||||
extern struct charset_info_st my_charset_ucs2_general_mysql500_ci;
|
||||
extern struct charset_info_st my_charset_ucs2_unicode_ci;
|
||||
extern struct charset_info_st my_charset_ucs2_general_mysql500_ci;
|
||||
extern struct charset_info_st my_charset_ujis_bin;
|
||||
extern struct charset_info_st my_charset_ujis_japanese_ci;
|
||||
extern struct charset_info_st my_charset_ujis_nopad_bin;
|
||||
extern struct charset_info_st my_charset_ujis_japanese_nopad_ci;
|
||||
extern struct charset_info_st my_charset_utf16_bin;
|
||||
extern struct charset_info_st my_charset_utf16_general_ci;
|
||||
extern struct charset_info_st my_charset_utf16_unicode_ci;
|
||||
extern struct charset_info_st my_charset_utf16le_bin;
|
||||
extern struct charset_info_st my_charset_utf16le_general_ci;
|
||||
extern struct charset_info_st my_charset_utf16_general_nopad_ci;
|
||||
extern struct charset_info_st my_charset_utf16_nopad_bin;
|
||||
extern struct charset_info_st my_charset_utf16le_nopad_bin;
|
||||
extern struct charset_info_st my_charset_utf16le_general_nopad_ci;
|
||||
extern struct charset_info_st my_charset_utf32_bin;
|
||||
extern struct charset_info_st my_charset_utf32_general_ci;
|
||||
extern struct charset_info_st my_charset_utf32_unicode_ci;
|
||||
extern struct charset_info_st my_charset_utf32_nopad_bin;
|
||||
extern struct charset_info_st my_charset_utf32_general_nopad_ci;
|
||||
extern struct charset_info_st my_charset_utf8_bin;
|
||||
extern struct charset_info_st my_charset_utf8_nopad_bin;
|
||||
extern struct charset_info_st my_charset_utf8_general_nopad_ci;
|
||||
extern struct charset_info_st my_charset_utf8_general_mysql500_ci;
|
||||
extern struct charset_info_st my_charset_utf8_unicode_ci;
|
||||
extern struct charset_info_st my_charset_utf8mb4_bin;
|
||||
extern struct charset_info_st my_charset_utf8mb4_general_ci;
|
||||
extern struct charset_info_st my_charset_utf8mb4_nopad_bin;
|
||||
extern struct charset_info_st my_charset_utf8mb4_general_nopad_ci;
|
||||
extern struct charset_info_st my_charset_utf8mb4_unicode_ci;
|
||||
|
||||
#define MY_UTF8MB3 "utf8"
|
||||
@@ -653,6 +687,11 @@ extern int my_strnncollsp_simple(CHARSET_INFO *, const uchar *, size_t,
|
||||
extern void my_hash_sort_simple(CHARSET_INFO *cs,
|
||||
const uchar *key, size_t len,
|
||||
ulong *nr1, ulong *nr2);
|
||||
|
||||
extern void my_hash_sort_simple_nopad(CHARSET_INFO *cs,
|
||||
const uchar *key, size_t len,
|
||||
ulong *nr1, ulong *nr2);
|
||||
|
||||
extern void my_hash_sort_bin(CHARSET_INFO *cs,
|
||||
const uchar *key, size_t len, ulong *nr1,
|
||||
ulong *nr2);
|
||||
@@ -824,18 +863,38 @@ int my_strcasecmp_mb_bin(CHARSET_INFO * cs __attribute__((unused)),
|
||||
void my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const uchar *key, size_t len,ulong *nr1, ulong *nr2);
|
||||
|
||||
void my_hash_sort_mb_nopad_bin(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const uchar *key, size_t len,
|
||||
ulong *nr1, ulong *nr2);
|
||||
|
||||
size_t my_strnxfrm_mb(CHARSET_INFO *,
|
||||
uchar *dst, size_t dstlen, uint nweights,
|
||||
const uchar *src, size_t srclen, uint flags);
|
||||
|
||||
size_t my_strnxfrm_mb_nopad(CHARSET_INFO *,
|
||||
uchar *dst, size_t dstlen, uint nweights,
|
||||
const uchar *src, size_t srclen, uint flags);
|
||||
|
||||
size_t my_strnxfrm_unicode(CHARSET_INFO *,
|
||||
uchar *dst, size_t dstlen, uint nweights,
|
||||
const uchar *src, size_t srclen, uint flags);
|
||||
|
||||
size_t my_strnxfrm_unicode_nopad(CHARSET_INFO *,
|
||||
uchar *dst, size_t dstlen, uint nweights,
|
||||
const uchar *src, size_t srclen, uint flags);
|
||||
|
||||
size_t my_strnxfrmlen_unicode(CHARSET_INFO *, size_t);
|
||||
|
||||
size_t my_strnxfrm_unicode_full_bin(CHARSET_INFO *,
|
||||
uchar *dst, size_t dstlen, uint nweights,
|
||||
const uchar *src, size_t srclen, uint flags);
|
||||
uchar *dst, size_t dstlen,
|
||||
uint nweights, const uchar *src,
|
||||
size_t srclen, uint flags);
|
||||
|
||||
size_t my_strnxfrm_unicode_full_nopad_bin(CHARSET_INFO *,
|
||||
uchar *dst, size_t dstlen,
|
||||
uint nweights, const uchar *src,
|
||||
size_t srclen, uint flags);
|
||||
|
||||
size_t my_strnxfrmlen_unicode_full_bin(CHARSET_INFO *, size_t);
|
||||
|
||||
int my_wildcmp_unicode(CHARSET_INFO *cs,
|
||||
@@ -865,7 +924,6 @@ void my_string_metadata_get(MY_STRING_METADATA *metadata,
|
||||
CHARSET_INFO *cs, const char *str, size_t len);
|
||||
uint my_string_repertoire(CHARSET_INFO *cs, const char *str, ulong len);
|
||||
my_bool my_charset_is_ascii_based(CHARSET_INFO *cs);
|
||||
my_bool my_charset_is_8bit_pure_ascii(CHARSET_INFO *cs);
|
||||
uint my_charset_repertoire(CHARSET_INFO *cs);
|
||||
|
||||
uint my_strxfrm_flag_normalize(uint flags, uint nlevels);
|
||||
@@ -874,8 +932,10 @@ void my_strxfrm_desc_and_reverse(uchar *str, uchar *strend,
|
||||
size_t my_strxfrm_pad_desc_and_reverse(CHARSET_INFO *cs,
|
||||
uchar *str, uchar *frmend, uchar *strend,
|
||||
uint nweights, uint flags, uint level);
|
||||
|
||||
my_bool my_charset_is_ascii_compatible(CHARSET_INFO *cs);
|
||||
size_t my_strxfrm_pad_desc_and_reverse_nopad(CHARSET_INFO *cs,
|
||||
uchar *str, uchar *frmend,
|
||||
uchar *strend, uint nweights,
|
||||
uint flags, uint level);
|
||||
|
||||
const MY_CONTRACTIONS *my_charset_get_contractions(CHARSET_INFO *cs,
|
||||
int level);
|
||||
|
||||
@@ -45,7 +45,7 @@ C_MODE_START
|
||||
#if defined(HAVE_STACKTRACE) || defined(HAVE_BACKTRACE)
|
||||
void my_init_stacktrace();
|
||||
void my_print_stacktrace(uchar* stack_bottom, ulong thread_stack);
|
||||
void my_safe_print_str(const char* val, int max_len);
|
||||
int my_safe_print_str(const char* val, int max_len);
|
||||
void my_write_core(int sig);
|
||||
#if BACKTRACE_DEMANGLE
|
||||
char *my_demangle(const char *mangled_name, int *status);
|
||||
|
||||
@@ -137,6 +137,7 @@ typedef unsigned long long my_ulonglong;
|
||||
/* backward compatibility define - to be removed eventually */
|
||||
#define ER_WARN_DATA_TRUNCATED WARN_DATA_TRUNCATED
|
||||
#define WARN_PLUGIN_DELETE_BUILTIN ER_PLUGIN_DELETE_BUILTIN
|
||||
#define ER_FK_DUP_NAME ER_DUP_CONSTRAINT_NAME
|
||||
|
||||
typedef struct st_mysql_rows {
|
||||
struct st_mysql_rows *next; /* list of rows */
|
||||
|
||||
@@ -10,7 +10,10 @@ enum enum_server_command
|
||||
COM_STMT_PREPARE, COM_STMT_EXECUTE, COM_STMT_SEND_LONG_DATA, COM_STMT_CLOSE,
|
||||
COM_STMT_RESET, COM_SET_OPTION, COM_STMT_FETCH, COM_DAEMON,
|
||||
COM_MDB_GAP_BEG,
|
||||
COM_MDB_GAP_END=253,
|
||||
COM_MDB_GAP_END=250,
|
||||
COM_SLAVE_WORKER,
|
||||
COM_SLAVE_IO,
|
||||
COM_SLAVE_SQL,
|
||||
COM_MULTI,
|
||||
COM_END
|
||||
};
|
||||
@@ -30,7 +33,7 @@ typedef struct st_net {
|
||||
char save_char;
|
||||
char net_skip_rest_factor;
|
||||
my_bool thread_specific_malloc;
|
||||
my_bool compress;
|
||||
unsigned char compress;
|
||||
my_bool unused3;
|
||||
void *thd;
|
||||
unsigned int last_errno;
|
||||
@@ -84,6 +87,16 @@ enum enum_mysql_set_option
|
||||
MYSQL_OPTION_MULTI_STATEMENTS_ON,
|
||||
MYSQL_OPTION_MULTI_STATEMENTS_OFF
|
||||
};
|
||||
enum enum_session_state_type
|
||||
{
|
||||
SESSION_TRACK_SYSTEM_VARIABLES,
|
||||
SESSION_TRACK_SCHEMA,
|
||||
SESSION_TRACK_STATE_CHANGE,
|
||||
SESSION_TRACK_GTIDS,
|
||||
SESSION_TRACK_TRANSACTION_CHARACTERISTICS,
|
||||
SESSION_TRACK_TRANSACTION_STATE,
|
||||
SESSION_TRACK_always_at_the_end
|
||||
};
|
||||
my_bool my_net_init(NET *net, Vio* vio, void *thd, unsigned int my_flags);
|
||||
void my_net_local_init(NET *net);
|
||||
void net_end(NET *net);
|
||||
|
||||
@@ -72,6 +72,14 @@
|
||||
#define INDEX_COMMENT_MAXLEN 1024
|
||||
#define TABLE_PARTITION_COMMENT_MAXLEN 1024
|
||||
|
||||
/*
|
||||
Maximum length of protocol packet.
|
||||
OK packet length limit also restricted to this value as any length greater
|
||||
than this value will have first byte of OK packet to be 254 thus does not
|
||||
provide a means to identify if this is OK or EOF packet.
|
||||
*/
|
||||
#define MAX_PACKET_LENGTH (256L*256L*256L-1)
|
||||
|
||||
/*
|
||||
USER_HOST_BUFF_SIZE -- length of string buffer, that is enough to contain
|
||||
username and hostname parts of the user identifier with trailing zero in
|
||||
@@ -105,7 +113,10 @@ enum enum_server_command
|
||||
COM_STMT_RESET, COM_SET_OPTION, COM_STMT_FETCH, COM_DAEMON,
|
||||
/* don't forget to update const char *command_name[] in sql_parse.cc */
|
||||
COM_MDB_GAP_BEG,
|
||||
COM_MDB_GAP_END=253,
|
||||
COM_MDB_GAP_END=250,
|
||||
COM_SLAVE_WORKER,
|
||||
COM_SLAVE_IO,
|
||||
COM_SLAVE_SQL,
|
||||
COM_MULTI,
|
||||
/* Must be last */
|
||||
COM_END
|
||||
@@ -218,6 +229,14 @@ enum enum_server_command
|
||||
/* Don't close the connection for a connection with expired password. */
|
||||
#define CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS (1UL << 22)
|
||||
|
||||
/**
|
||||
Capable of handling server state change information. Its a hint to the
|
||||
server to include the state change information in Ok packet.
|
||||
*/
|
||||
#define CLIENT_SESSION_TRACK (1UL << 23)
|
||||
/* Client no longer needs EOF packet */
|
||||
#define CLIENT_DEPRECATE_EOF (1UL << 24)
|
||||
|
||||
#define CLIENT_PROGRESS_OBSOLETE (1UL << 29)
|
||||
#define CLIENT_SSL_VERIFY_SERVER_CERT (1UL << 30)
|
||||
/*
|
||||
@@ -273,6 +292,8 @@ enum enum_server_command
|
||||
MARIADB_CLIENT_PROGRESS | \
|
||||
CLIENT_PLUGIN_AUTH | \
|
||||
CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA | \
|
||||
CLIENT_SESSION_TRACK |\
|
||||
CLIENT_DEPRECATE_EOF |\
|
||||
CLIENT_CONNECT_ATTRS |\
|
||||
MARIADB_CLIENT_COM_MULTI)
|
||||
|
||||
@@ -337,6 +358,11 @@ enum enum_server_command
|
||||
*/
|
||||
#define SERVER_STATUS_IN_TRANS_READONLY 8192
|
||||
|
||||
/**
|
||||
This status flag, when on, implies that one of the state information has
|
||||
changed on the server because of the execution of the last statement.
|
||||
*/
|
||||
#define SERVER_SESSION_STATE_CHANGED (1UL << 14)
|
||||
|
||||
/**
|
||||
Server status flags that must be cleared when starting
|
||||
@@ -353,7 +379,8 @@ enum enum_server_command
|
||||
SERVER_QUERY_WAS_SLOW |\
|
||||
SERVER_STATUS_DB_DROPPED |\
|
||||
SERVER_STATUS_CURSOR_EXISTS|\
|
||||
SERVER_STATUS_LAST_ROW_SENT)
|
||||
SERVER_STATUS_LAST_ROW_SENT|\
|
||||
SERVER_SESSION_STATE_CHANGED)
|
||||
|
||||
#define MYSQL_ERRMSG_SIZE 512
|
||||
#define NET_READ_TIMEOUT 30 /* Timeout on read */
|
||||
@@ -391,7 +418,7 @@ typedef struct st_net {
|
||||
char save_char;
|
||||
char net_skip_rest_factor;
|
||||
my_bool thread_specific_malloc;
|
||||
my_bool compress;
|
||||
unsigned char compress;
|
||||
my_bool unused3; /* Please remove with the next incompatible ABI change. */
|
||||
/*
|
||||
Pointer to query object in query cache, do not equal NULL (0) for
|
||||
@@ -520,6 +547,26 @@ enum enum_mysql_set_option
|
||||
MYSQL_OPTION_MULTI_STATEMENTS_OFF
|
||||
};
|
||||
|
||||
/*
|
||||
Type of state change information that the server can include in the Ok
|
||||
packet.
|
||||
*/
|
||||
enum enum_session_state_type
|
||||
{
|
||||
SESSION_TRACK_SYSTEM_VARIABLES, /* Session system variables */
|
||||
SESSION_TRACK_SCHEMA, /* Current schema */
|
||||
SESSION_TRACK_STATE_CHANGE, /* track session state changes */
|
||||
SESSION_TRACK_GTIDS,
|
||||
SESSION_TRACK_TRANSACTION_CHARACTERISTICS, /* Transaction chistics */
|
||||
SESSION_TRACK_TRANSACTION_STATE, /* Transaction state */
|
||||
SESSION_TRACK_always_at_the_end /* must be last */
|
||||
};
|
||||
|
||||
#define SESSION_TRACK_BEGIN SESSION_TRACK_SYSTEM_VARIABLES
|
||||
|
||||
#define IS_SESSION_STATE_TYPE(T) \
|
||||
(((int)(T) >= SESSION_TRACK_BEGIN) && ((T) < SESSION_TRACK_always_at_the_end))
|
||||
|
||||
#define net_new_transaction(net) ((net)->pkt_nr=0)
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -638,6 +685,7 @@ my_ulonglong net_field_length_ll(uchar **packet);
|
||||
my_ulonglong safe_net_field_length_ll(uchar **packet, size_t packet_len);
|
||||
uchar *net_store_length(uchar *pkg, ulonglong length);
|
||||
uchar *safe_net_store_length(uchar *pkg, size_t pkg_len, ulonglong length);
|
||||
unsigned int net_length_size(ulonglong num);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -444,7 +444,7 @@ ADD_CONVENIENCE_LIBRARY(clientlib ${CLIENT_SOURCES})
|
||||
DTRACE_INSTRUMENT(clientlib)
|
||||
ADD_DEPENDENCIES(clientlib GenError)
|
||||
|
||||
SET(LIBS clientlib dbug strings vio mysys mysys_ssl ${ZLIB_LIBRARY} ${SSL_LIBRARIES} ${LIBDL})
|
||||
SET(LIBS clientlib dbug strings vio mysys mysys_ssl ${ZLIB_LIBRARY} ${SSL_LIBRARIES} ${LIBDL} ${CRC32_VPMSUM_LIBRARY})
|
||||
|
||||
# Merge several convenience libraries into one big mysqlclient
|
||||
# and link them together into shared library.
|
||||
|
||||
@@ -112,6 +112,7 @@ SET(SQL_EMBEDDED_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc
|
||||
../sql/item_windowfunc.cc ../sql/sql_window.cc
|
||||
../sql/sql_cte.cc
|
||||
../sql/temporary_tables.cc
|
||||
../sql/session_tracker.cc
|
||||
${GEN_SOURCES}
|
||||
${MYSYS_LIBWRAP_SOURCE}
|
||||
)
|
||||
|
||||
@@ -334,6 +334,12 @@ static int emb_stmt_execute(MYSQL_STMT *stmt)
|
||||
THD *thd;
|
||||
my_bool res;
|
||||
|
||||
if (stmt->param_count && !stmt->bind_param_done)
|
||||
{
|
||||
set_stmt_error(stmt, CR_PARAMS_NOT_BOUND, unknown_sqlstate, NULL);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
int4store(header, stmt->stmt_id);
|
||||
header[4]= (uchar) stmt->flags;
|
||||
thd= (THD*)stmt->mysql->thd;
|
||||
@@ -1172,7 +1178,7 @@ bool
|
||||
net_send_ok(THD *thd,
|
||||
uint server_status, uint statement_warn_count,
|
||||
ulonglong affected_rows, ulonglong id, const char *message,
|
||||
bool unused __attribute__((unused)))
|
||||
bool, bool)
|
||||
{
|
||||
DBUG_ENTER("emb_net_send_ok");
|
||||
MYSQL_DATA *data;
|
||||
|
||||
79
mysql-test/include/ctype_pad.inc
Normal file
79
mysql-test/include/ctype_pad.inc
Normal file
@@ -0,0 +1,79 @@
|
||||
--echo #
|
||||
--echo # Start of ctype_pad.inc
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Unique indexes
|
||||
--echo #
|
||||
|
||||
eval CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE $coll;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
|
||||
--echo #
|
||||
--echo # UNION
|
||||
--echo #
|
||||
|
||||
eval CREATE TABLE t2 (a VARCHAR(10)) COLLATE $coll;
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
--echo #
|
||||
--echo # DISTINCT, COUNT, MAX
|
||||
--echo #
|
||||
|
||||
eval CREATE TABLE t1 (a VARCHAR(10)) COLLATE $coll;
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
|
||||
--echo #
|
||||
--echo # GROUP BY
|
||||
--echo #
|
||||
|
||||
eval CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE $coll;
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
DROP TABLE t2;
|
||||
|
||||
--echo #
|
||||
--echo # Weights
|
||||
--echo #
|
||||
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # IF, CASE, LEAST
|
||||
--echo #
|
||||
|
||||
eval SELECT IF('abc' COLLATE $coll = 'abc ', 'pad', 'nopad');
|
||||
eval SELECT CASE 'abc' COLLATE $coll WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
eval SELECT CASE WHEN 'abc' COLLATE $coll = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
eval SELECT HEX(LEAST('abc ' COLLATE $coll, 'abc '));
|
||||
eval SELECT HEX(GREATEST('abc ' COLLATE $coll, 'abc '));
|
||||
|
||||
--echo #
|
||||
--echo # Collation mix
|
||||
--echo #
|
||||
|
||||
eval CREATE TABLE t1 (a VARCHAR(10)) COLLATE $coll_pad;
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
eval SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE $coll_pad;
|
||||
eval SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE $coll;
|
||||
eval ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE $coll;
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
eval SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE $coll_pad;
|
||||
eval SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE $coll;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of ctype_pad.inc
|
||||
--echo #
|
||||
7
mysql-test/include/ctype_pad_all_engines.inc
Normal file
7
mysql-test/include/ctype_pad_all_engines.inc
Normal file
@@ -0,0 +1,7 @@
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
--source include/ctype_pad.inc
|
||||
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
--source include/ctype_pad.inc
|
||||
|
||||
SET STORAGE_ENGINE=Default;
|
||||
@@ -45,6 +45,8 @@ loose-feedback-debug-startup-interval=20
|
||||
loose-feedback-debug-first-interval=60
|
||||
loose-feedback-debug-interval=60
|
||||
|
||||
loose-pam-debug
|
||||
|
||||
loose-innodb_data_file_path= ibdata1:12M:autoextend
|
||||
loose-innodb_buffer_pool_size= 8M
|
||||
loose-innodb_lru_scan_depth= 100
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# show server variables
|
||||
#
|
||||
|
||||
--disable_query_log
|
||||
--echo ===== ENGINES =====
|
||||
show engines;
|
||||
--echo ===== VARIABLES =====
|
||||
show variables;
|
||||
--echo ===== STOP =====
|
||||
--enable_query_log
|
||||
exit;
|
||||
@@ -14,7 +14,7 @@ while ($mysql_errno)
|
||||
# Strangely enough, the server might return "Too many connections"
|
||||
# while being shutdown, thus 1040 is an "allowed" error
|
||||
# See BUG#36228
|
||||
--error 0,1040,1053,2002,2003,2005,2006,2013
|
||||
--error 0,1040,1053,2002,2003,2005,2006,2013,1927
|
||||
show status;
|
||||
|
||||
dec $counter;
|
||||
|
||||
@@ -12,7 +12,7 @@ while (!$mysql_errno)
|
||||
# Strangely enough, the server might return "Too many connections"
|
||||
# while being shutdown, thus 1040 is an "allowed" error.
|
||||
# See BUG#36228.
|
||||
--error 0,1040,1053,2002,2003,2005,2006,2013
|
||||
--error 0,1040,1053,2002,2003,2005,2006,2013,1927
|
||||
show status;
|
||||
|
||||
dec $counter;
|
||||
|
||||
@@ -338,7 +338,7 @@ sub dump_core {
|
||||
my ($self)= @_;
|
||||
return if IS_WINDOWS;
|
||||
my $pid= $self->{SAFE_PID};
|
||||
die "Can't cet core from not started process" unless defined $pid;
|
||||
die "Can't get core from not started process" unless defined $pid;
|
||||
_verbose("Sending ABRT to $self");
|
||||
kill ("ABRT", $pid);
|
||||
return 1;
|
||||
|
||||
@@ -311,6 +311,7 @@ sub combinations_from_file($$)
|
||||
}
|
||||
|
||||
our %disabled;
|
||||
our %disabled_wildcards;
|
||||
sub parse_disabled {
|
||||
my ($filename, $suitename) = @_;
|
||||
|
||||
@@ -319,10 +320,18 @@ sub parse_disabled {
|
||||
chomp;
|
||||
next if /^\s*#/ or /^\s*$/;
|
||||
mtr_error("Syntax error in $filename line $.")
|
||||
unless /^\s*(?:([-0-9A-Za-z_\/]+)\.)?([-0-9A-Za-z_#]+)\s*:\s*(.*?)\s*$/;
|
||||
mtr_error("Wrong suite name in $filename line $.")
|
||||
unless /^\s*(?:([-0-9A-Za-z_\/]+)\.)?([-0-9A-Za-z_#\*]+)\s*:\s*(.*?)\s*$/;
|
||||
mtr_error("Wrong suite name in $filename line $.: suitename = $suitename but the file says $1")
|
||||
if defined $1 and defined $suitename and $1 ne $suitename;
|
||||
$disabled{($1 || $suitename || '') . ".$2"} = $3;
|
||||
my ($sname, $casename, $text)= (($1 || $suitename || ''), $2, $3);
|
||||
|
||||
if ($casename =~ /\*/) {
|
||||
# Wildcard
|
||||
$disabled_wildcards{$sname . ".$casename"}= $text;
|
||||
}
|
||||
else {
|
||||
$disabled{$sname . ".$casename"}= $text;
|
||||
}
|
||||
}
|
||||
close DISABLED;
|
||||
}
|
||||
@@ -720,6 +729,14 @@ sub collect_one_test_case {
|
||||
# Check for disabled tests
|
||||
# ----------------------------------------------------------------------
|
||||
my $disable = $disabled{".$tname"} || $disabled{$name};
|
||||
if (not $disable) {
|
||||
foreach my $w (keys %disabled_wildcards) {
|
||||
if ($name =~ /^$w/) {
|
||||
$disable= $disabled_wildcards{$w};
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (not defined $disable and $suite->{parent}) {
|
||||
$disable = $disabled{$suite->{parent}->{name} . ".$tname"};
|
||||
}
|
||||
|
||||
@@ -284,7 +284,6 @@ my $opt_port_base= $ENV{'MTR_PORT_BASE'} || "auto";
|
||||
my $build_thread= 0;
|
||||
|
||||
my $opt_record;
|
||||
my $opt_report_features;
|
||||
|
||||
our $opt_resfile= $ENV{'MTR_RESULT_FILE'} || 0;
|
||||
|
||||
@@ -317,7 +316,6 @@ our $opt_user = "root";
|
||||
our $opt_valgrind= 0;
|
||||
my $opt_valgrind_mysqld= 0;
|
||||
my $opt_valgrind_mysqltest= 0;
|
||||
my @default_valgrind_args= ("--show-reachable=yes");
|
||||
my @valgrind_args;
|
||||
my $opt_strace= 0;
|
||||
my $opt_strace_client;
|
||||
@@ -352,6 +350,7 @@ my $source_dist= -d "../sql";
|
||||
my $opt_max_save_core= env_or_val(MTR_MAX_SAVE_CORE => 5);
|
||||
my $opt_max_save_datadir= env_or_val(MTR_MAX_SAVE_DATADIR => 20);
|
||||
my $opt_max_test_fail= env_or_val(MTR_MAX_TEST_FAIL => 10);
|
||||
my $opt_core_on_failure= 0;
|
||||
|
||||
my $opt_parallel= $ENV{MTR_PARALLEL} || 1;
|
||||
my $opt_port_group_size = $ENV{MTR_PORT_GROUP_SIZE} || 20;
|
||||
@@ -429,21 +428,6 @@ sub main {
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ( $opt_report_features ) {
|
||||
# Put "report features" as the first test to run
|
||||
my $tinfo = My::Test->new
|
||||
(
|
||||
name => 'report_features',
|
||||
# No result_file => Prints result
|
||||
path => 'include/report-features.test',
|
||||
template_path => "include/default_my.cnf",
|
||||
master_opt => [],
|
||||
slave_opt => [],
|
||||
suite => 'main',
|
||||
);
|
||||
unshift(@$tests, $tinfo);
|
||||
}
|
||||
|
||||
#######################################################################
|
||||
my $num_tests= @$tests;
|
||||
if ( $opt_parallel eq "auto" ) {
|
||||
@@ -1157,6 +1141,7 @@ sub command_line_setup {
|
||||
'max-save-core=i' => \$opt_max_save_core,
|
||||
'max-save-datadir=i' => \$opt_max_save_datadir,
|
||||
'max-test-fail=i' => \$opt_max_test_fail,
|
||||
'core-on-failure' => \$opt_core_on_failure,
|
||||
|
||||
# Coverage, profiling etc
|
||||
'gcov' => \$opt_gcov,
|
||||
@@ -1190,7 +1175,6 @@ sub command_line_setup {
|
||||
'client-libdir=s' => \$path_client_libdir,
|
||||
|
||||
# Misc
|
||||
'report-features' => \$opt_report_features,
|
||||
'comment=s' => \$opt_comment,
|
||||
'fast' => \$opt_fast,
|
||||
'force-restart' => \$opt_force_restart,
|
||||
@@ -1722,17 +1706,27 @@ sub command_line_setup {
|
||||
# Set special valgrind options unless options passed on command line
|
||||
push(@valgrind_args, "--trace-children=yes")
|
||||
unless @valgrind_args;
|
||||
unshift(@valgrind_args, "--tool=callgrind");
|
||||
}
|
||||
|
||||
# default to --tool=memcheck
|
||||
if ($opt_valgrind && ! grep(/^--tool=/i, @valgrind_args))
|
||||
{
|
||||
# Set valgrind_option unless already defined
|
||||
push(@valgrind_args, ("--show-reachable=yes", "--leak-check=yes",
|
||||
"--num-callers=16"))
|
||||
unless @valgrind_args;
|
||||
unshift(@valgrind_args, "--tool=memcheck");
|
||||
}
|
||||
|
||||
if ( $opt_valgrind )
|
||||
{
|
||||
# Set valgrind_options to default unless already defined
|
||||
push(@valgrind_args, @default_valgrind_args)
|
||||
unless @valgrind_args;
|
||||
|
||||
# Make valgrind run in quiet mode so it only print errors
|
||||
push(@valgrind_args, "--quiet" );
|
||||
|
||||
push(@valgrind_args, "--suppressions=${glob_mysql_test_dir}/valgrind.supp")
|
||||
if -f "$glob_mysql_test_dir/valgrind.supp";
|
||||
|
||||
mtr_report("Running valgrind with options \"",
|
||||
join(" ", @valgrind_args), "\"");
|
||||
}
|
||||
@@ -3770,6 +3764,7 @@ sub run_testcase ($$) {
|
||||
my $print_freq=20;
|
||||
|
||||
mtr_verbose("Running test:", $tinfo->{name});
|
||||
$ENV{'MTR_TEST_NAME'} = $tinfo->{name};
|
||||
resfile_report_test($tinfo) if $opt_resfile;
|
||||
|
||||
# Allow only alpanumerics pluss _ - + . in combination names,
|
||||
@@ -4157,7 +4152,7 @@ sub run_testcase ($$) {
|
||||
}
|
||||
|
||||
# Try to dump core for mysqltest and all servers
|
||||
foreach my $proc ($test, started(all_servers()))
|
||||
foreach my $proc ($test, started(all_servers()))
|
||||
{
|
||||
mtr_print("Trying to dump core for $proc");
|
||||
if ($proc->dump_core())
|
||||
@@ -4848,7 +4843,9 @@ sub after_failure ($) {
|
||||
sub report_failure_and_restart ($) {
|
||||
my $tinfo= shift;
|
||||
|
||||
if ($opt_valgrind_mysqld && ($tinfo->{'warnings'} || $tinfo->{'timeout'})) {
|
||||
if ($opt_valgrind_mysqld && ($tinfo->{'warnings'} || $tinfo->{'timeout'}) &&
|
||||
$opt_core_on_failure == 0)
|
||||
{
|
||||
# In these cases we may want valgrind report from normal termination
|
||||
$tinfo->{'dont_kill_server'}= 1;
|
||||
}
|
||||
@@ -5496,6 +5493,13 @@ sub start_mysqltest ($) {
|
||||
mtr_add_arg($args, "--sleep=%d", $opt_sleep);
|
||||
}
|
||||
|
||||
if ( $opt_valgrind )
|
||||
{
|
||||
# We are running server under valgrind, which causes some replication
|
||||
# test to be much slower, notable rpl_mdev6020. Increase timeout.
|
||||
mtr_add_arg($args, "--wait-for-pos-timeout=1500");
|
||||
}
|
||||
|
||||
if ( $opt_ssl )
|
||||
{
|
||||
# Turn on SSL for _all_ test cases if option --ssl was used
|
||||
@@ -5506,12 +5510,6 @@ sub start_mysqltest ($) {
|
||||
mtr_add_arg($args, "--max-connections=%d", $opt_max_connections);
|
||||
}
|
||||
|
||||
if ( $opt_valgrind )
|
||||
{
|
||||
# Longer timeouts when running with valgrind
|
||||
mtr_add_arg($args, "--wait-longer-for-timeouts");
|
||||
}
|
||||
|
||||
if ( $opt_embedded_server )
|
||||
{
|
||||
|
||||
@@ -5831,29 +5829,15 @@ sub valgrind_arguments {
|
||||
my $args= shift;
|
||||
my $exe= shift;
|
||||
|
||||
if ( $opt_callgrind)
|
||||
# Ensure the jemalloc works with mysqld
|
||||
if ($$exe =~ /mysqld/)
|
||||
{
|
||||
mtr_add_arg($args, "--tool=callgrind");
|
||||
mtr_add_arg($args, "--base=$opt_vardir/log");
|
||||
}
|
||||
else
|
||||
{
|
||||
mtr_add_arg($args, "--tool=memcheck"); # From >= 2.1.2 needs this option
|
||||
mtr_add_arg($args, "--leak-check=yes");
|
||||
mtr_add_arg($args, "--num-callers=16");
|
||||
mtr_add_arg($args, "--suppressions=%s/valgrind.supp", $glob_mysql_test_dir)
|
||||
if -f "$glob_mysql_test_dir/valgrind.supp";
|
||||
|
||||
# Ensure the jemalloc works with mysqld
|
||||
if ($$exe =~ /mysqld/)
|
||||
{
|
||||
my %somalloc=(
|
||||
'system jemalloc' => 'libjemalloc*',
|
||||
'bundled jemalloc' => 'NONE'
|
||||
);
|
||||
my ($syn) = $somalloc{$mysqld_variables{'version-malloc-library'}};
|
||||
mtr_add_arg($args, '--soname-synonyms=somalloc=%s', $syn) if $syn;
|
||||
}
|
||||
my %somalloc=(
|
||||
'system jemalloc' => 'libjemalloc*',
|
||||
'bundled jemalloc' => 'NONE'
|
||||
);
|
||||
my ($syn) = $somalloc{$mysqld_variables{'version-malloc-library'}};
|
||||
mtr_add_arg($args, '--soname-synonyms=somalloc=%s', $syn) if $syn;
|
||||
}
|
||||
|
||||
# Add valgrind options, can be overridden by user
|
||||
@@ -6145,6 +6129,7 @@ Options for debugging the product
|
||||
the current test run. Defaults to
|
||||
$opt_max_test_fail, set to 0 for no limit. Set
|
||||
it's default with MTR_MAX_TEST_FAIL
|
||||
core-in-failure Generate a core even if run server is run with valgrind
|
||||
|
||||
Options for valgrind
|
||||
|
||||
@@ -6228,7 +6213,6 @@ Misc options
|
||||
gprof Collect profiling information using gprof.
|
||||
experimental=<file> Refer to list of tests considered experimental;
|
||||
failures will be marked exp-fail instead of fail.
|
||||
report-features First run a "test" that reports mysql features
|
||||
timestamp Print timestamp before each test report line
|
||||
timediff With --timestamp, also print time passed since
|
||||
*previous* test started
|
||||
|
||||
@@ -1504,7 +1504,7 @@ ALTER TABLE t1 DROP KEY IF EXISTS transaction_id, ADD PRIMARY KEY IF NOT EXISTS
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`transaction_id` int(11) NOT NULL DEFAULT '0',
|
||||
`transaction_id` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`transaction_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
@@ -2057,3 +2057,26 @@ t1 CREATE TABLE `t1` (
|
||||
KEY `i1` (`a`) COMMENT 'comment2'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-10421 duplicate CHECK CONSTRAINTs
|
||||
#
|
||||
CREATE TABLE t1 (a INT, b INT) engine=myisam;
|
||||
ALTER TABLE t1 ADD CONSTRAINT IF NOT EXISTS `min` CHECK (a+b > 100);
|
||||
ALTER TABLE t1 ADD CONSTRAINT `min` CHECK (a+b > 100);
|
||||
ERROR HY000: Duplicate CHECK constraint name 'min'
|
||||
ALTER TABLE t1 ADD CONSTRAINT IF NOT EXISTS `min` CHECK (a+b > 100);
|
||||
Warnings:
|
||||
Note 1826 Duplicate CHECK constraint name 'min'
|
||||
ALTER TABLE t1 ADD CONSTRAINT `mini` CHECK (a+b > 100);
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` int(11) DEFAULT NULL,
|
||||
CONSTRAINT `min` CHECK (a+b > 100),
|
||||
CONSTRAINT `mini` CHECK (a+b > 100)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a INT, b INT, CONSTRAINT min check (a>5),
|
||||
CONSTRAINT min check (b>5));
|
||||
ERROR HY000: Duplicate CHECK constraint name 'min'
|
||||
|
||||
@@ -10,10 +10,10 @@ drop index `primary` on lineitem;
|
||||
show create table lineitem;
|
||||
Table Create Table
|
||||
lineitem CREATE TABLE `lineitem` (
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT '0',
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT 0,
|
||||
`l_partkey` int(11) DEFAULT NULL,
|
||||
`l_suppkey` int(11) DEFAULT NULL,
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT '0',
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT 0,
|
||||
`l_quantity` double DEFAULT NULL,
|
||||
`l_extendedprice` double DEFAULT NULL,
|
||||
`l_discount` double DEFAULT NULL,
|
||||
@@ -39,10 +39,10 @@ alter table lineitem add primary key (l_orderkey, l_linenumber);
|
||||
show create table lineitem;
|
||||
Table Create Table
|
||||
lineitem CREATE TABLE `lineitem` (
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT '0',
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT 0,
|
||||
`l_partkey` int(11) DEFAULT NULL,
|
||||
`l_suppkey` int(11) DEFAULT NULL,
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT '0',
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT 0,
|
||||
`l_quantity` double DEFAULT NULL,
|
||||
`l_extendedprice` double DEFAULT NULL,
|
||||
`l_discount` double DEFAULT NULL,
|
||||
@@ -80,10 +80,10 @@ ERROR 23000: Duplicate entry '1-2' for key 'PRIMARY'
|
||||
show create table lineitem;
|
||||
Table Create Table
|
||||
lineitem CREATE TABLE `lineitem` (
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT '0',
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT 0,
|
||||
`l_partkey` int(11) DEFAULT NULL,
|
||||
`l_suppkey` int(11) DEFAULT NULL,
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT '0',
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT 0,
|
||||
`l_quantity` double DEFAULT NULL,
|
||||
`l_extendedprice` double DEFAULT NULL,
|
||||
`l_discount` double DEFAULT NULL,
|
||||
@@ -114,10 +114,10 @@ alter table lineitem add primary key (l_orderkey, l_linenumber);
|
||||
show create table lineitem;
|
||||
Table Create Table
|
||||
lineitem CREATE TABLE `lineitem` (
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT '0',
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT 0,
|
||||
`l_partkey` int(11) DEFAULT NULL,
|
||||
`l_suppkey` int(11) DEFAULT NULL,
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT '0',
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT 0,
|
||||
`l_quantity` double DEFAULT NULL,
|
||||
`l_extendedprice` double DEFAULT NULL,
|
||||
`l_discount` double DEFAULT NULL,
|
||||
|
||||
@@ -10,10 +10,10 @@ drop index `primary` on lineitem;
|
||||
show create table lineitem;
|
||||
Table Create Table
|
||||
lineitem CREATE TABLE `lineitem` (
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT '0',
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT 0,
|
||||
`l_partkey` int(11) DEFAULT NULL,
|
||||
`l_suppkey` int(11) DEFAULT NULL,
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT '0',
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT 0,
|
||||
`l_quantity` double DEFAULT NULL,
|
||||
`l_extendedprice` double DEFAULT NULL,
|
||||
`l_discount` double DEFAULT NULL,
|
||||
@@ -39,10 +39,10 @@ alter table lineitem add primary key (l_orderkey, l_linenumber);
|
||||
show create table lineitem;
|
||||
Table Create Table
|
||||
lineitem CREATE TABLE `lineitem` (
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT '0',
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT 0,
|
||||
`l_partkey` int(11) DEFAULT NULL,
|
||||
`l_suppkey` int(11) DEFAULT NULL,
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT '0',
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT 0,
|
||||
`l_quantity` double DEFAULT NULL,
|
||||
`l_extendedprice` double DEFAULT NULL,
|
||||
`l_discount` double DEFAULT NULL,
|
||||
@@ -80,10 +80,10 @@ ERROR 23000: Duplicate entry '1-2' for key 'PRIMARY'
|
||||
show create table lineitem;
|
||||
Table Create Table
|
||||
lineitem CREATE TABLE `lineitem` (
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT '0',
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT 0,
|
||||
`l_partkey` int(11) DEFAULT NULL,
|
||||
`l_suppkey` int(11) DEFAULT NULL,
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT '0',
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT 0,
|
||||
`l_quantity` double DEFAULT NULL,
|
||||
`l_extendedprice` double DEFAULT NULL,
|
||||
`l_discount` double DEFAULT NULL,
|
||||
@@ -114,10 +114,10 @@ alter table lineitem add primary key (l_orderkey, l_linenumber);
|
||||
show create table lineitem;
|
||||
Table Create Table
|
||||
lineitem CREATE TABLE `lineitem` (
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT '0',
|
||||
`l_orderkey` int(11) NOT NULL DEFAULT 0,
|
||||
`l_partkey` int(11) DEFAULT NULL,
|
||||
`l_suppkey` int(11) DEFAULT NULL,
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT '0',
|
||||
`l_linenumber` int(11) NOT NULL DEFAULT 0,
|
||||
`l_quantity` double DEFAULT NULL,
|
||||
`l_extendedprice` double DEFAULT NULL,
|
||||
`l_discount` double DEFAULT NULL,
|
||||
|
||||
@@ -18,7 +18,7 @@ info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT '10'
|
||||
`a` int(11) DEFAULT 10
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
|
||||
@@ -27,7 +27,7 @@ a b
|
||||
truncate table t1;
|
||||
insert ignore into t1 values (101,101),(102,102),(600,600),(103,103);
|
||||
Warnings:
|
||||
Warning 4022 CONSTRAINT `max` failed for `test`.`t1`
|
||||
Warning 4025 CONSTRAINT `max` failed for `test`.`t1`
|
||||
select * from t1;
|
||||
a b
|
||||
101 101
|
||||
@@ -54,7 +54,7 @@ Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL CHECK (a>10),
|
||||
`b` int(11) DEFAULT NULL CHECK (b > 20),
|
||||
`c` int(11) DEFAULT '0' CHECK (c < 10),
|
||||
`c` int(11) DEFAULT 0 CHECK (c < 10),
|
||||
CONSTRAINT `min` CHECK (a+b > 100),
|
||||
CONSTRAINT `max` CHECK (a+b <500),
|
||||
CONSTRAINT `CONSTRAINT_1` CHECK (a+b+c < 500)
|
||||
@@ -77,7 +77,7 @@ Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` int(11) DEFAULT NULL CHECK (a>10),
|
||||
`b` int(11) DEFAULT NULL CHECK (b > 20),
|
||||
`c` int(11) DEFAULT '0' CHECK (c < 10),
|
||||
`c` int(11) DEFAULT 0 CHECK (c < 10),
|
||||
CONSTRAINT `min` CHECK (a+b > 100),
|
||||
CONSTRAINT `max` CHECK (a+b <500),
|
||||
CONSTRAINT `CONSTRAINT_1` CHECK (a+b+c < 500)
|
||||
@@ -93,7 +93,7 @@ Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` int(11) DEFAULT NULL CHECK (a>10),
|
||||
`b` int(11) DEFAULT NULL CHECK (b > 20),
|
||||
`c` int(11) DEFAULT '0' CHECK (c < 10),
|
||||
`c` int(11) DEFAULT 0 CHECK (c < 10),
|
||||
CONSTRAINT `max` CHECK (a+b <500),
|
||||
CONSTRAINT `CONSTRAINT_1` CHECK (a+b+c < 500)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
@@ -249,7 +249,7 @@ abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij
|
||||
SELECT comment,index_comment,char_length(index_comment) FROM information_schema.statistics WHERE table_name='t1';
|
||||
comment index_comment char_length(index_comment)
|
||||
ALTER TABLE t1 ADD COLUMN c64 INTEGER COMMENT 'abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij';
|
||||
ERROR HY000: Too many columns
|
||||
ERROR HY000: Table definition is too large
|
||||
SELECT table_comment,char_length(table_comment) FROM information_schema.tables WHERE table_name='t1';
|
||||
table_comment char_length(table_comment)
|
||||
0
|
||||
@@ -388,7 +388,7 @@ c63 INTEGER COMMENT 'abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghi
|
||||
c64 INTEGER COMMENT 'abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij',
|
||||
c65 INTEGER COMMENT 'abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij')
|
||||
;
|
||||
ERROR HY000: Too many columns
|
||||
ERROR HY000: Table definition is too large
|
||||
SELECT table_comment,char_length(table_comment) FROM information_schema.tables WHERE table_name='t1';
|
||||
table_comment char_length(table_comment)
|
||||
SELECT column_comment,char_length(column_comment) FROM information_schema.columns WHERE table_name='t1';
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
SHOW CONTRIBUTORS;
|
||||
Name Location Comment
|
||||
Booking.com http://www.booking.com Founding member of the MariaDB Foundation
|
||||
MariaDB Corporation https://mariadb.com Founding member of the MariaDB Foundation
|
||||
Auttomattic http://automattic.com Member of the MariaDB Foundation
|
||||
Visma http://visma.com Member of the MariaDB Foundation
|
||||
Nexedi http://www.nexedi.com Member of the MariaDB Foundation
|
||||
Acronis http://www.acronis.com Member of the MariaDB Foundation
|
||||
Verkkokauppa.com Finland Sponsor of the MariaDB Foundation
|
||||
Virtuozzo https://virtuozzo.com/ Sponsor of the MariaDB Foundation
|
||||
Booking.com http://www.booking.com Founding member, Platinum Sponsor of the MariaDB Foundation
|
||||
MariaDB Corporation https://mariadb.com Founding member, Gold Sponsor of the MariaDB Foundation
|
||||
Visma http://visma.com Gold Sponsor of the MariaDB Foundation
|
||||
DBS http://dbs.com Gold Sponsor of the MariaDB Foundation
|
||||
Nexedi https://www.nexedi.com Silver Sponsor of the MariaDB Foundation
|
||||
Acronis http://www.acronis.com Silver Sponsor of the MariaDB Foundation
|
||||
Auttomattic https://automattic.com Bronze Sponsor of the MariaDB Foundation
|
||||
Verkkokauppa.com https://virtuozzo.com Bronze Sponsor of the MariaDB Foundation
|
||||
Virtuozzo https://virtuozzo.com/ Bronze Sponsor of the MariaDB Foundation
|
||||
Google USA Sponsoring encryption, parallel replication and GTID
|
||||
Facebook USA Sponsoring non-blocking API, LIMIT ROWS EXAMINED etc
|
||||
Ronald Bradford Brisbane, Australia EFF contribution for UC2006 Auction
|
||||
|
||||
@@ -10,7 +10,7 @@ COLLATE latin1_bin;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(11) DEFAULT '12' COMMENT 'column1',
|
||||
`c1` int(11) DEFAULT 12 COMMENT 'column1',
|
||||
`c2` int(11) DEFAULT NULL COMMENT 'column2',
|
||||
`c3` int(11) NOT NULL COMMENT 'column3',
|
||||
`c4` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT 'a',
|
||||
@@ -21,7 +21,7 @@ CREATE TABLE t2 AS SELECT * FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`c1` int(11) DEFAULT '12' COMMENT 'column1',
|
||||
`c1` int(11) DEFAULT 12 COMMENT 'column1',
|
||||
`c2` int(11) DEFAULT NULL COMMENT 'column2',
|
||||
`c3` int(11) NOT NULL COMMENT 'column3',
|
||||
`c4` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT 'a',
|
||||
|
||||
@@ -803,8 +803,8 @@ select a1,a2 from t1;
|
||||
show create table t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` int(11) DEFAULT '3',
|
||||
`b` int(11) DEFAULT '3',
|
||||
`a` int(11) DEFAULT 3,
|
||||
`b` int(11) DEFAULT 3,
|
||||
`a1` int(11) DEFAULT NULL,
|
||||
`a2` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
@@ -943,6 +943,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 7
|
||||
@@ -1133,46 +1134,46 @@ create table t1 like information_schema.processlist;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`ID` bigint(4) NOT NULL DEFAULT '0',
|
||||
`ID` bigint(4) NOT NULL DEFAULT 0,
|
||||
`USER` varchar(128) NOT NULL DEFAULT '',
|
||||
`HOST` varchar(64) NOT NULL DEFAULT '',
|
||||
`DB` varchar(64) DEFAULT NULL,
|
||||
`COMMAND` varchar(16) NOT NULL DEFAULT '',
|
||||
`TIME` int(7) NOT NULL DEFAULT '0',
|
||||
`TIME` int(7) NOT NULL DEFAULT 0,
|
||||
`STATE` varchar(64) DEFAULT NULL,
|
||||
`INFO` longtext DEFAULT NULL,
|
||||
`TIME_MS` decimal(22,3) NOT NULL DEFAULT '0.000',
|
||||
`STAGE` tinyint(2) NOT NULL DEFAULT '0',
|
||||
`MAX_STAGE` tinyint(2) NOT NULL DEFAULT '0',
|
||||
`PROGRESS` decimal(7,3) NOT NULL DEFAULT '0.000',
|
||||
`MEMORY_USED` bigint(7) NOT NULL DEFAULT '0',
|
||||
`EXAMINED_ROWS` int(7) NOT NULL DEFAULT '0',
|
||||
`QUERY_ID` bigint(4) NOT NULL DEFAULT '0',
|
||||
`TIME_MS` decimal(22,3) NOT NULL DEFAULT 0.000,
|
||||
`STAGE` tinyint(2) NOT NULL DEFAULT 0,
|
||||
`MAX_STAGE` tinyint(2) NOT NULL DEFAULT 0,
|
||||
`PROGRESS` decimal(7,3) NOT NULL DEFAULT 0.000,
|
||||
`MEMORY_USED` bigint(7) NOT NULL DEFAULT 0,
|
||||
`EXAMINED_ROWS` int(7) NOT NULL DEFAULT 0,
|
||||
`QUERY_ID` bigint(4) NOT NULL DEFAULT 0,
|
||||
`INFO_BINARY` blob DEFAULT NULL,
|
||||
`TID` bigint(4) NOT NULL DEFAULT '0'
|
||||
`TID` bigint(4) NOT NULL DEFAULT 0
|
||||
) DEFAULT CHARSET=utf8
|
||||
drop table t1;
|
||||
create temporary table t1 like information_schema.processlist;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TEMPORARY TABLE `t1` (
|
||||
`ID` bigint(4) NOT NULL DEFAULT '0',
|
||||
`ID` bigint(4) NOT NULL DEFAULT 0,
|
||||
`USER` varchar(128) NOT NULL DEFAULT '',
|
||||
`HOST` varchar(64) NOT NULL DEFAULT '',
|
||||
`DB` varchar(64) DEFAULT NULL,
|
||||
`COMMAND` varchar(16) NOT NULL DEFAULT '',
|
||||
`TIME` int(7) NOT NULL DEFAULT '0',
|
||||
`TIME` int(7) NOT NULL DEFAULT 0,
|
||||
`STATE` varchar(64) DEFAULT NULL,
|
||||
`INFO` longtext DEFAULT NULL,
|
||||
`TIME_MS` decimal(22,3) NOT NULL DEFAULT '0.000',
|
||||
`STAGE` tinyint(2) NOT NULL DEFAULT '0',
|
||||
`MAX_STAGE` tinyint(2) NOT NULL DEFAULT '0',
|
||||
`PROGRESS` decimal(7,3) NOT NULL DEFAULT '0.000',
|
||||
`MEMORY_USED` bigint(7) NOT NULL DEFAULT '0',
|
||||
`EXAMINED_ROWS` int(7) NOT NULL DEFAULT '0',
|
||||
`QUERY_ID` bigint(4) NOT NULL DEFAULT '0',
|
||||
`TIME_MS` decimal(22,3) NOT NULL DEFAULT 0.000,
|
||||
`STAGE` tinyint(2) NOT NULL DEFAULT 0,
|
||||
`MAX_STAGE` tinyint(2) NOT NULL DEFAULT 0,
|
||||
`PROGRESS` decimal(7,3) NOT NULL DEFAULT 0.000,
|
||||
`MEMORY_USED` bigint(7) NOT NULL DEFAULT 0,
|
||||
`EXAMINED_ROWS` int(7) NOT NULL DEFAULT 0,
|
||||
`QUERY_ID` bigint(4) NOT NULL DEFAULT 0,
|
||||
`INFO_BINARY` blob DEFAULT NULL,
|
||||
`TID` bigint(4) NOT NULL DEFAULT '0'
|
||||
`TID` bigint(4) NOT NULL DEFAULT 0
|
||||
) DEFAULT CHARSET=utf8
|
||||
drop table t1;
|
||||
create table t1 like information_schema.character_sets;
|
||||
@@ -1182,7 +1183,7 @@ t1 CREATE TABLE `t1` (
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DESCRIPTION` varchar(60) NOT NULL DEFAULT '',
|
||||
`MAXLEN` bigint(3) NOT NULL DEFAULT '0'
|
||||
`MAXLEN` bigint(3) NOT NULL DEFAULT 0
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
drop table t1;
|
||||
|
||||
@@ -1241,8 +1242,8 @@ CREATE TABLE t1(c1 YEAR DEFAULT 2008, c2 YEAR DEFAULT 0);
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` year(4) DEFAULT '2008',
|
||||
`c2` year(4) DEFAULT '0000'
|
||||
`c1` year(4) DEFAULT 2008,
|
||||
`c2` year(4) DEFAULT 0000
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
INSERT INTO t1 VALUES();
|
||||
@@ -1256,8 +1257,8 @@ ALTER TABLE t1 MODIFY c1 YEAR DEFAULT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` year(4) DEFAULT '0000',
|
||||
`c2` year(4) DEFAULT '0000'
|
||||
`c1` year(4) DEFAULT 0000,
|
||||
`c2` year(4) DEFAULT 0000
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
INSERT INTO t1 VALUES();
|
||||
|
||||
@@ -309,6 +309,41 @@ c c
|
||||
1 1
|
||||
4 4
|
||||
4 4
|
||||
# t two references of t used in different parts of a union
|
||||
with t as (select a from t1 where b >= 'c')
|
||||
select * from t where a < 2
|
||||
union
|
||||
select * from t where a >= 4;
|
||||
a
|
||||
1
|
||||
4
|
||||
select * from (select a from t1 where b >= 'c') as t
|
||||
where t.a < 2
|
||||
union
|
||||
select * from (select a from t1 where b >= 'c') as t
|
||||
where t.a >= 4;
|
||||
a
|
||||
1
|
||||
4
|
||||
explain
|
||||
with t as (select a from t1 where b >= 'c')
|
||||
select * from t where a < 2
|
||||
union
|
||||
select * from t where a >= 4;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 Using where
|
||||
3 UNION t1 ALL NULL NULL NULL NULL 8 Using where
|
||||
NULL UNION RESULT <union1,3> ALL NULL NULL NULL NULL NULL
|
||||
explain
|
||||
select * from (select a from t1 where b >= 'c') as t
|
||||
where t.a < 2
|
||||
union
|
||||
select * from (select a from t1 where b >= 'c') as t
|
||||
where t.a >= 4;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 Using where
|
||||
3 UNION t1 ALL NULL NULL NULL NULL 8 Using where
|
||||
NULL UNION RESULT <union1,3> ALL NULL NULL NULL NULL NULL
|
||||
# specification of t contains union
|
||||
with t as (select a from t1 where b >= 'f'
|
||||
union
|
||||
@@ -534,7 +569,7 @@ with t as (select a from t1 where b >= 'c')
|
||||
select * from t2,t where t2.c=t.a;
|
||||
show create view v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS WITH t AS (select `t1`.`a` AS `a` from `t1` where (`t1`.`b` >= 'c'))select `t2`.`c` AS `c`,`t`.`a` AS `a` from (`t2` join `t`) where (`t2`.`c` = `t`.`a`) latin1 latin1_swedish_ci
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where (`t1`.`b` >= 'c'))select `t2`.`c` AS `c`,`t`.`a` AS `a` from (`t2` join `t`) where (`t2`.`c` = `t`.`a`) latin1 latin1_swedish_ci
|
||||
select * from v1;
|
||||
c a
|
||||
4 4
|
||||
@@ -551,7 +586,7 @@ with t as (select a, count(*) from t1 where b >= 'c' group by a)
|
||||
select * from t2,t where t2.c=t.a;
|
||||
show create view v2;
|
||||
View Create View character_set_client collation_connection
|
||||
v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS WITH t AS (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` where (`t1`.`b` >= 'c') group by `t1`.`a`)select `t2`.`c` AS `c`,`t`.`a` AS `a`,`t`.`count(*)` AS `count(*)` from (`t2` join `t`) where (`t2`.`c` = `t`.`a`) latin1 latin1_swedish_ci
|
||||
v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS with t as (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` where (`t1`.`b` >= 'c') group by `t1`.`a`)select `t2`.`c` AS `c`,`t`.`a` AS `a`,`t`.`count(*)` AS `count(*)` from (`t2` join `t`) where (`t2`.`c` = `t`.`a`) latin1 latin1_swedish_ci
|
||||
select * from v2;
|
||||
c a count(*)
|
||||
4 4 2
|
||||
@@ -569,7 +604,7 @@ with t(c) as (select a from t1 where b >= 'c')
|
||||
select * from t r1 where r1.c=4;
|
||||
show create view v3;
|
||||
View Create View character_set_client collation_connection
|
||||
v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS WITH t AS (select `t1`.`a` AS `c` from `t1` where (`t1`.`b` >= 'c'))select `r1`.`c` AS `c` from `t` `r1` where (`r1`.`c` = 4) latin1 latin1_swedish_ci
|
||||
v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS with t as (select `t1`.`a` AS `c` from `t1` where (`t1`.`b` >= 'c'))select `r1`.`c` AS `c` from `t` `r1` where (`r1`.`c` = 4) latin1 latin1_swedish_ci
|
||||
select * from v3;
|
||||
c
|
||||
4
|
||||
@@ -581,7 +616,7 @@ with t(c) as (select a from t1 where b >= 'c')
|
||||
select * from t r1, t r2 where r1.c=r2.c and r2.c=4;
|
||||
show create view v4;
|
||||
View Create View character_set_client collation_connection
|
||||
v4 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v4` AS WITH t AS (select `t1`.`a` AS `c` from `t1` where (`t1`.`b` >= 'c'))select `r1`.`c` AS `c`,`r2`.`c` AS `d` from (`t` `r1` join `t` `r2`) where ((`r1`.`c` = `r2`.`c`) and (`r2`.`c` = 4)) latin1 latin1_swedish_ci
|
||||
v4 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v4` AS with t as (select `t1`.`a` AS `c` from `t1` where (`t1`.`b` >= 'c'))select `r1`.`c` AS `c`,`r2`.`c` AS `d` from (`t` `r1` join `t` `r2`) where ((`r1`.`c` = `r2`.`c`) and (`r2`.`c` = 4)) latin1 latin1_swedish_ci
|
||||
select * from v4;
|
||||
c d
|
||||
4 4
|
||||
@@ -672,7 +707,7 @@ ERROR HY000: Duplicate query name in WITH clause
|
||||
with t as (select a from s where a<5),
|
||||
s as (select a from t1 where b>='d')
|
||||
select * from t,s where t.a=s.a;
|
||||
ERROR HY000: The definition of the table 't' refers to the table 's' defined later in a non-recursive WITH clause
|
||||
ERROR 42S02: Table 'test.s' doesn't exist
|
||||
with recursive
|
||||
t as (select a from s where a<5),
|
||||
s as (select a from t1 where b>='d')
|
||||
@@ -688,24 +723,28 @@ with recursive t as (select * from s where a>2),
|
||||
s as (select a from t1,r where t1.a>r.c),
|
||||
r as (select c from t,t2 where t.a=t2.c)
|
||||
select * from r where r.c<7;
|
||||
ERROR HY000: Recursive queries in WITH clause are not supported yet
|
||||
with t as (select * from s where a>2),
|
||||
ERROR HY000: No anchors for recursive WITH element 't'
|
||||
with recursive
|
||||
t as (select * from s where a>2),
|
||||
s as (select a from t1,r where t1.a>r.c),
|
||||
r as (select c from t,t2 where t.a=t2.c)
|
||||
select * from r where r.c<7;
|
||||
ERROR HY000: Recursive queries in WITH clause are not supported yet
|
||||
with t as (select * from t1
|
||||
ERROR HY000: No anchors for recursive WITH element 't'
|
||||
with recursive
|
||||
t as (select * from t1
|
||||
where a in (select c from s where b<='ccc') and b>'b'),
|
||||
s as (select * from t1,t2
|
||||
where t1.a=t2.c and t1.c in (select a from t where a<5))
|
||||
select * from s where s.b>'aaa';
|
||||
ERROR HY000: Recursive queries in WITH clause are not supported yet
|
||||
with t as (select * from t1 where b>'aaa' and b <='d')
|
||||
ERROR HY000: No anchors for recursive WITH element 't'
|
||||
with recursive
|
||||
t as (select * from t1 where b>'aaa' and b <='d')
|
||||
select t.b from t,t2
|
||||
where t.a=t2.c and
|
||||
t2.c in (with s as (select t1.a from s,t1 where t1.a=s.a and t1.b<'c')
|
||||
t2.c in (with recursive
|
||||
s as (select t1.a from s,t1 where t1.a=s.a and t1.b<'c')
|
||||
select * from s);
|
||||
ERROR HY000: Recursive queries in WITH clause are not supported yet
|
||||
ERROR HY000: No anchors for recursive WITH element 's'
|
||||
#erroneous definition of unreferenced with table t
|
||||
with t as (select count(*) from t1 where d>='f' group by a)
|
||||
select t1.b from t2,t1 where t1.a = t2.c;
|
||||
@@ -742,6 +781,22 @@ ERROR HY000: WITH column list and SELECT field list have different column counts
|
||||
with t(f1,f1) as (select * from t1 where b >= 'c')
|
||||
select t1.b from t2,t1 where t1.a = t2.c;
|
||||
ERROR 42S21: Duplicate column name 'f1'
|
||||
# explain for query with unreferenced with table
|
||||
explain
|
||||
with t as (select a from t1 where b >= 'c')
|
||||
select t1.b from t2,t1 where t1.a = t2.c;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 4
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 Using where; Using join buffer (flat, BNL join)
|
||||
explain
|
||||
with t as (select a, count(*) from t1 where b >= 'c' group by a)
|
||||
select t1.b from t2,t1 where t1.a = t2.c;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 4
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 Using where; Using join buffer (flat, BNL join)
|
||||
# too many with elements in with clause
|
||||
with s65 as (select * from t1), s64 as (select * from t1) , s63 as (select * from t1) , s62 as (select * from t1) , s61 as (select * from t1) , s60 as (select * from t1) , s59 as (select * from t1) , s58 as (select * from t1) , s57 as (select * from t1) , s56 as (select * from t1) , s55 as (select * from t1) , s54 as (select * from t1) , s53 as (select * from t1) , s52 as (select * from t1) , s51 as (select * from t1) , s50 as (select * from t1) , s49 as (select * from t1) , s48 as (select * from t1) , s47 as (select * from t1) , s46 as (select * from t1) , s45 as (select * from t1) , s44 as (select * from t1) , s43 as (select * from t1) , s42 as (select * from t1) , s41 as (select * from t1) , s40 as (select * from t1) , s39 as (select * from t1) , s38 as (select * from t1) , s37 as (select * from t1) , s36 as (select * from t1) , s35 as (select * from t1) , s34 as (select * from t1) , s33 as (select * from t1) , s32 as (select * from t1) , s31 as (select * from t1) , s30 as (select * from t1) , s29 as (select * from t1) , s28 as (select * from t1) , s27 as (select * from t1) , s26 as (select * from t1) , s25 as (select * from t1) , s24 as (select * from t1) , s23 as (select * from t1) , s22 as (select * from t1) , s21 as (select * from t1) , s20 as (select * from t1) , s19 as (select * from t1) , s18 as (select * from t1) , s17 as (select * from t1) , s16 as (select * from t1) , s15 as (select * from t1) , s14 as (select * from t1) , s13 as (select * from t1) , s12 as (select * from t1) , s11 as (select * from t1) , s10 as (select * from t1) , s9 as (select * from t1) , s8 as (select * from t1) , s7 as (select * from t1) , s6 as (select * from t1) , s5 as (select * from t1) , s4 as (select * from t1) , s3 as (select * from t1) , s2 as (select * from t1) , s1 as (select * from t1) select * from s65;
|
||||
ERROR HY000: Too many WITH elements in WITH clause
|
||||
drop table t1,t2;
|
||||
#
|
||||
# Bug mdev-9937: View used in the specification of with table
|
||||
@@ -773,3 +828,70 @@ a
|
||||
2
|
||||
3
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# Bug mdev-10344: the WITH clause of the query refers to a view that uses
|
||||
# a base table with the same name as a CTE table from the clause
|
||||
#
|
||||
create table ten(a int primary key);
|
||||
insert into ten values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
create table one_k(a int primary key);
|
||||
insert into one_k select A.a + B.a* 10 + C.a * 100 from ten A, ten B, ten C;
|
||||
create view v1 as select * from ten;
|
||||
select * from v1;
|
||||
a
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
drop view v1;
|
||||
drop table ten, one_k;
|
||||
#
|
||||
# MDEV-10057 : Crash with EXPLAIN + WITH + constant query
|
||||
#
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
SELECT * FROM (WITH a AS (SELECT * FROM t1) SELECT 1) AS t1;
|
||||
1
|
||||
1
|
||||
EXPLAIN SELECT * FROM (WITH a AS (SELECT * FROM t1) SELECT 1) AS t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> system NULL NULL NULL NULL 1
|
||||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-10058: Suspicious EXPLAIN output for a derived table + WITH + joined table
|
||||
#
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE TABLE t2 (a INT);
|
||||
CREATE TABLE t3 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
INSERT INTO t2 VALUES (1),(2),(3);
|
||||
INSERT INTO t3 VALUES (1),(2),(3);
|
||||
EXPLAIN SELECT * FROM (WITH a AS (SELECT * FROM t1) (t2 NATURAL JOIN t3));
|
||||
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 't2 NATURAL JOIN t3))' at line 1
|
||||
explain SELECT * FROM (WITH a AS (SELECT * FROM t1) SELECT * FROM t2 NATURAL JOIN t3) AS d1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# MDEV-10729: Server crashes in st_select_lex::set_explain_type
|
||||
#
|
||||
CREATE TABLE t1 (i1 INT, KEY(i1)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (4),(8);
|
||||
CREATE TABLE t2 (a2 INT, b2 INT, KEY(b2)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (8,7);
|
||||
CREATE TABLE t3 (i3 INT) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES (2),(6);
|
||||
SELECT * FROM t1, t2 WHERE a2 = i1 and b2 >= i1 AND i1 IN ( SELECT i3 FROM t3 )
|
||||
UNION
|
||||
SELECT * FROM t1, t2 WHERE a2 = i1 and b2 >= i1 AND i1 IN ( SELECT i3 FROM t3 )
|
||||
;
|
||||
i1 a2 b2
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
1634
mysql-test/r/cte_recursive.result
Normal file
1634
mysql-test/r/cte_recursive.result
Normal file
File diff suppressed because it is too large
Load Diff
@@ -4830,3 +4830,567 @@ DROP TABLE t1;
|
||||
#
|
||||
# End of 10.0 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=big5;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'big5_chinese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE big5_chinese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=big5 COLLATE=big5_chinese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'big5_chinese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'big5_chinese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'big5_chinese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'big5_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'big5_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'big5_chinese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_chinese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_chinese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'big5_chinese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_chinese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_chinese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'big5_chinese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE big5_chinese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=big5 COLLATE=big5_chinese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'big5_chinese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'big5_chinese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'big5_chinese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'big5_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'big5_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'big5_chinese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_chinese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_chinese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'big5_chinese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_chinese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_chinese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'big5_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE big5_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=big5 COLLATE=big5_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'big5_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'big5_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'big5_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'big5_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'big5_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'big5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'big5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'big5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'big5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'big5_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'big5_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'big5_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'big5_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'big5_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'big5_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'big5_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE big5_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=big5 COLLATE=big5_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'big5_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'big5_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'big5_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'big5_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'big5_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'big5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'big5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'big5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'big5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'big5_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'big5_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'big5_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'big5_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'big5_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'big5_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'big5_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -33,3 +33,567 @@ DROP TABLE t1;
|
||||
SET @@character_set_client= @old_character_set_client;
|
||||
SET @@character_set_connection= @old_character_set_connection;
|
||||
SET @@character_set_results= @old_character_set_results;
|
||||
#
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=cp932;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'cp932_japanese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE cp932_japanese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=cp932 COLLATE=cp932_japanese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'cp932_japanese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_japanese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'cp932_japanese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_japanese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'cp932_japanese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'cp932_japanese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE cp932_japanese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=cp932 COLLATE=cp932_japanese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'cp932_japanese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_japanese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'cp932_japanese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_japanese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'cp932_japanese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'cp932_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE cp932_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=cp932 COLLATE=cp932_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'cp932_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'cp932_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'cp932_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'cp932_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE cp932_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=cp932 COLLATE=cp932_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'cp932_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'cp932_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'cp932_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -33914,7 +33914,7 @@ DROP TABLE t1;
|
||||
# End of 10.1 tests
|
||||
#
|
||||
#
|
||||
# End of 10.2 tests
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9842 LOAD DATA INFILE does not work well with a TEXT column when using sjis
|
||||
@@ -33932,5 +33932,563 @@ HEX(a)
|
||||
3F3F
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=eucjpms;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE eucjpms_japanese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=eucjpms COLLATE=eucjpms_japanese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'eucjpms_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'eucjpms_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'eucjpms_japanese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE eucjpms_japanese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=eucjpms COLLATE=eucjpms_japanese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'eucjpms_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'eucjpms_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'eucjpms_japanese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'eucjpms_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE eucjpms_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=eucjpms COLLATE=eucjpms_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'eucjpms_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'eucjpms_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'eucjpms_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'eucjpms_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'eucjpms_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'eucjpms_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'eucjpms_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'eucjpms_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'eucjpms_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'eucjpms_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'eucjpms_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'eucjpms_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE eucjpms_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=eucjpms COLLATE=eucjpms_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'eucjpms_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'eucjpms_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'eucjpms_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'eucjpms_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'eucjpms_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'eucjpms_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'eucjpms_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'eucjpms_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'eucjpms_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'eucjpms_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'eucjpms_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'eucjpms_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -25428,3 +25428,567 @@ A1A1A1A1A1A120202020202020202020202020202020202020
|
||||
#
|
||||
# End of 5.6 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=euckr;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'euckr_korean_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE euckr_korean_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=euckr COLLATE=euckr_korean_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'euckr_korean_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'euckr_korean_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'euckr_korean_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'euckr_korean_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'euckr_korean_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'euckr_korean_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_korean_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_korean_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'euckr_korean_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_korean_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_korean_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'euckr_korean_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE euckr_korean_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=euckr COLLATE=euckr_korean_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'euckr_korean_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'euckr_korean_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'euckr_korean_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'euckr_korean_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'euckr_korean_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'euckr_korean_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_korean_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_korean_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'euckr_korean_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_korean_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_korean_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'euckr_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE euckr_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=euckr COLLATE=euckr_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'euckr_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'euckr_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'euckr_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'euckr_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'euckr_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'euckr_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'euckr_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'euckr_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'euckr_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'euckr_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'euckr_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'euckr_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'euckr_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'euckr_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'euckr_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'euckr_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE euckr_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=euckr COLLATE=euckr_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'euckr_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'euckr_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'euckr_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'euckr_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'euckr_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'euckr_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'euckr_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'euckr_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'euckr_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'euckr_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'euckr_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'euckr_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'euckr_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'euckr_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'euckr_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'euckr_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -4525,3 +4525,567 @@ DROP TABLE allbytes;
|
||||
#
|
||||
# End of 10.0 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=gb2312;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'gb2312_chinese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE gb2312_chinese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COLLATE=gb2312_chinese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'gb2312_chinese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gb2312_chinese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'gb2312_chinese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'gb2312_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'gb2312_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gb2312_chinese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_chinese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_chinese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'gb2312_chinese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_chinese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_chinese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'gb2312_chinese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE gb2312_chinese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=gb2312 COLLATE=gb2312_chinese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'gb2312_chinese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gb2312_chinese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'gb2312_chinese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'gb2312_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'gb2312_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gb2312_chinese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_chinese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_chinese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'gb2312_chinese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_chinese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_chinese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'gb2312_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE gb2312_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COLLATE=gb2312_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'gb2312_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gb2312_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'gb2312_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'gb2312_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'gb2312_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'gb2312_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'gb2312_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'gb2312_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'gb2312_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'gb2312_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'gb2312_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'gb2312_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'gb2312_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gb2312_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'gb2312_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'gb2312_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE gb2312_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=gb2312 COLLATE=gb2312_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'gb2312_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gb2312_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'gb2312_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'gb2312_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'gb2312_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'gb2312_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'gb2312_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'gb2312_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'gb2312_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'gb2312_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'gb2312_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'gb2312_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'gb2312_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gb2312_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'gb2312_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gb2312_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -5945,5 +5945,563 @@ HEX(a)
|
||||
B042
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=gbk;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'gbk_chinese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE gbk_chinese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=gbk COLLATE=gbk_chinese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'gbk_chinese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gbk_chinese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'gbk_chinese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'gbk_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'gbk_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gbk_chinese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_chinese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_chinese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'gbk_chinese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_chinese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_chinese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'gbk_chinese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE gbk_chinese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=gbk COLLATE=gbk_chinese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'gbk_chinese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gbk_chinese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'gbk_chinese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'gbk_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'gbk_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gbk_chinese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_chinese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_chinese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'gbk_chinese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_chinese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_chinese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'gbk_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE gbk_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=gbk COLLATE=gbk_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'gbk_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gbk_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'gbk_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'gbk_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'gbk_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'gbk_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'gbk_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'gbk_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'gbk_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'gbk_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'gbk_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'gbk_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'gbk_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gbk_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'gbk_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'gbk_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE gbk_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=gbk COLLATE=gbk_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'gbk_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gbk_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'gbk_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'gbk_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'gbk_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'gbk_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'gbk_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'gbk_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'gbk_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'gbk_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'gbk_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'gbk_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'gbk_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'gbk_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'gbk_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'gbk_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -8222,3 +8222,567 @@ DROP TABLE t1;
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=latin1;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'latin1_swedish_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE latin1_swedish_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'latin1_swedish_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'latin1_swedish_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'latin1_swedish_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'latin1_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'latin1_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'latin1_swedish_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_swedish_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_swedish_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'latin1_swedish_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_swedish_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_swedish_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'latin1_swedish_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE latin1_swedish_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'latin1_swedish_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'latin1_swedish_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'latin1_swedish_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'latin1_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'latin1_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'latin1_swedish_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_swedish_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_swedish_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'latin1_swedish_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_swedish_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_swedish_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'latin1_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE latin1_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'latin1_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'latin1_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'latin1_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'latin1_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'latin1_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'latin1_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'latin1_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'latin1_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'latin1_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'latin1_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'latin1_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'latin1_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'latin1_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'latin1_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'latin1_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'latin1_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE latin1_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=latin1 COLLATE=latin1_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'latin1_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'latin1_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'latin1_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'latin1_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'latin1_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'latin1_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'latin1_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'latin1_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'latin1_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'latin1_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'latin1_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'latin1_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'latin1_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'latin1_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'latin1_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'latin1_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -5,7 +5,7 @@ with all Unicode character sets
|
||||
set names utf8;
|
||||
show variables like 'character_sets_dir%';
|
||||
Variable_name Value
|
||||
character_sets_dir MYSQL_TEST_DIR/std_data/
|
||||
character_sets_dir MYSQL_TEST_DIR/std_data/ldml/
|
||||
show collation like 'utf8_phone_ci';
|
||||
Collation Charset Id Default Compiled Sortlen
|
||||
utf8_phone_ci utf8 352 8
|
||||
@@ -454,10 +454,20 @@ select "foo" = "foo " collate latin1_test;
|
||||
The following tests check that two-byte collation IDs work
|
||||
select * from information_schema.collations where id>256 and is_compiled<>'Yes' order by id;
|
||||
COLLATION_NAME CHARACTER_SET_NAME ID IS_DEFAULT IS_COMPILED SORTLEN
|
||||
ascii2_general_nopad_ci ascii2 318 1
|
||||
ascii2_bin2 ascii2 319 1
|
||||
ascii2_general_ci ascii2 320 Yes 1
|
||||
ascii2_bin ascii2 321 1
|
||||
ascii2_general_inherited_ci ascii2 322 1
|
||||
ascii2_general_inherited2_ci ascii2 323 1
|
||||
ascii2_badly_inherited_ci ascii2 324 1
|
||||
ascii2_nopad_bin ascii2 325 1
|
||||
utf8mb4_test_ci utf8mb4 326 8
|
||||
utf16_test_ci utf16 327 8
|
||||
utf8mb4_test_400_ci utf8mb4 328 8
|
||||
latin1_test2 latin1 332 1
|
||||
latin1_test2_cs latin1 333 1
|
||||
latin1_swedish_nopad2_ci latin1 334 1
|
||||
utf8_bengali_standard_ci utf8 336 8
|
||||
utf8_bengali_traditional_ci utf8 337 8
|
||||
utf8_implicit_weights_ci utf8 338 8
|
||||
@@ -478,6 +488,7 @@ show collation like '%test%';
|
||||
Collation Charset Id Default Compiled Sortlen
|
||||
latin1_test latin1 99 Yes 1
|
||||
latin1_test2 latin1 332 1
|
||||
latin1_test2_cs latin1 333 1
|
||||
utf8_test_ci utf8 353 8
|
||||
ucs2_test_ci ucs2 358 8
|
||||
utf8mb4_test_ci utf8mb4 326 8
|
||||
@@ -1179,3 +1190,102 @@ ch w ducet
|
||||
3700 FB80B700 FB80B700
|
||||
3701 FB80B700 FB80B701
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Testing that the MY_CS_PUREASCII flag is set properly
|
||||
# Comparison between ascii2 and latin1 should not give "illegal collation error"
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET ascii2, b VARCHAR(10) CHARACTER SET latin1);
|
||||
INSERT INTO t1 VALUES ('a','a'),('b','b');
|
||||
SELECT * FROM t1 WHERE a=b;
|
||||
a b
|
||||
a a
|
||||
b b
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) CHARACTER SET ascii2 COLLATE ascii2_bin2;
|
||||
SELECT * FROM t1 WHERE a=b;
|
||||
a b
|
||||
a a
|
||||
b b
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) CHARACTER SET ascii2 COLLATE ascii2_bin;
|
||||
SELECT * FROM t1 WHERE a=b;
|
||||
a b
|
||||
a a
|
||||
b b
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) CHARACTER SET ascii2 COLLATE ascii2_general_inherited_ci;
|
||||
SELECT * FROM t1 WHERE a=b;
|
||||
a b
|
||||
a a
|
||||
b b
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) CHARACTER SET ascii2 COLLATE ascii2_general_inherited2_ci;
|
||||
SELECT * FROM t1 WHERE a=b;
|
||||
a b
|
||||
a a
|
||||
b b
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Testing that in case of two binary collations
|
||||
# "BINARY" in a column definition uses the collation with the least id
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET ascii2 BINARY);
|
||||
INSERT INTO t1 VALUES ('test');
|
||||
SELECT COLLATION(a) FROM t1;
|
||||
COLLATION(a)
|
||||
ascii2_bin2
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Testing mixing of two binary collations of the same character set
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
a VARCHAR(10) CHARACTER SET ascii2 COLLATE ascii2_bin,
|
||||
b VARCHAR(10) CHARACTER SET ascii2 COLLATE ascii2_bin2
|
||||
);
|
||||
INSERT INTO t1 VALUES ('a','a');
|
||||
SELECT * FROM t1 WHERE a=b;
|
||||
ERROR HY000: Illegal mix of collations (ascii2_bin,IMPLICIT) and (ascii2_bin2,IMPLICIT) for operation '='
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Testing bad collation inheritance
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET ascii2 COLLATE ascii2_badly_inherited_ci);
|
||||
ERROR HY000: Unknown collation: 'ascii2_badly_inherited_ci'
|
||||
#
|
||||
# Testing that the MY_CS_CSSORT flag is set properly
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_test);
|
||||
INSERT INTO t1 VALUES ('a'),('A');
|
||||
SELECT * FROM t1 WHERE a RLIKE 'a';
|
||||
a
|
||||
a
|
||||
A
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_test2_cs);
|
||||
INSERT INTO t1 VALUES ('a'),('A');
|
||||
SELECT * FROM t1 WHERE a RLIKE 'a';
|
||||
a
|
||||
a
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9711 NO PAD collations
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET ascii2 COLLATE ascii2_general_nopad_ci);
|
||||
INSERT INTO t1 VALUES ('a'),('a '),('A'),('A ');
|
||||
SELECT a, a='a', a='a ', HEX(a), LOWER(a), UPPER(a), CONVERT(a USING utf8) FROM t1;
|
||||
a a='a' a='a ' HEX(a) LOWER(a) UPPER(a) CONVERT(a USING utf8)
|
||||
a 1 0 61 a A a
|
||||
a 0 1 6120 a A a
|
||||
A 1 0 41 a A A
|
||||
A 0 1 4120 a A A
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) CHARACTER SET ascii2 COLLATE ascii2_nopad_bin;
|
||||
SELECT a, a='a', a='a ', HEX(a), LOWER(a), UPPER(a), CONVERT(a USING utf8) FROM t1;
|
||||
a a='a' a='a ' HEX(a) LOWER(a) UPPER(a) CONVERT(a USING utf8)
|
||||
a 1 0 61 a A a
|
||||
a 0 1 6120 a A a
|
||||
A 0 0 41 a A A
|
||||
A 0 0 4120 a A A
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_swedish_nopad2_ci;
|
||||
SELECT a, a='a', a='a ', HEX(a), LOWER(a), UPPER(a), CONVERT(a USING utf8) FROM t1;
|
||||
a a='a' a='a ' HEX(a) LOWER(a) UPPER(a) CONVERT(a USING utf8)
|
||||
a 1 0 61 a A a
|
||||
a 0 1 6120 a A a
|
||||
A 1 0 41 a A A
|
||||
A 0 1 4120 a A A
|
||||
DROP TABLE t1;
|
||||
|
||||
12771
mysql-test/r/ctype_nopad_8bit.result
Normal file
12771
mysql-test/r/ctype_nopad_8bit.result
Normal file
File diff suppressed because it is too large
Load Diff
@@ -18746,5 +18746,563 @@ a=CONCAT('x', REPEAT(_sjis 0x835C, 200))
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=sjis;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'sjis_japanese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE sjis_japanese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=sjis COLLATE=sjis_japanese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'sjis_japanese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'sjis_japanese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'sjis_japanese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'sjis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'sjis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'sjis_japanese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'sjis_japanese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'sjis_japanese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE sjis_japanese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=sjis COLLATE=sjis_japanese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'sjis_japanese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'sjis_japanese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'sjis_japanese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'sjis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'sjis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'sjis_japanese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'sjis_japanese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'sjis_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE sjis_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=sjis COLLATE=sjis_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'sjis_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'sjis_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'sjis_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'sjis_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'sjis_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'sjis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'sjis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'sjis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'sjis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'sjis_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'sjis_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'sjis_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'sjis_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'sjis_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'sjis_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'sjis_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE sjis_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=sjis COLLATE=sjis_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'sjis_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'sjis_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'sjis_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'sjis_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'sjis_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'sjis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'sjis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'sjis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'sjis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'sjis_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'sjis_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'sjis_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'sjis_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'sjis_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'sjis_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'sjis_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -3069,3 +3069,567 @@ DROP TABLE allbytes;
|
||||
#
|
||||
# End of 10.0 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=swe7;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'swe7_swedish_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE ?t1? (
|
||||
?a? varchar(10) COLLATE swe7_swedish_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (?a?)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=swe7 COLLATE=swe7_swedish_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'swe7_swedish_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'swe7_swedish_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'swe7_swedish_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'swe7_swedish_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_swedish_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_swedish_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'swe7_swedish_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_swedish_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_swedish_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'swe7_swedish_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE ?t1? (
|
||||
?a? varchar(10) COLLATE swe7_swedish_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (?a?)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=swe7 COLLATE=swe7_swedish_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'swe7_swedish_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'swe7_swedish_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'swe7_swedish_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'swe7_swedish_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_swedish_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_swedish_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'swe7_swedish_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_swedish_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_swedish_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'swe7_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE ?t1? (
|
||||
?a? varchar(10) COLLATE swe7_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (?a?)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=swe7 COLLATE=swe7_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'swe7_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'swe7_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'swe7_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'swe7_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'swe7_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'swe7_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE ?t1? (
|
||||
?a? varchar(10) COLLATE swe7_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (?a?)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=swe7 COLLATE=swe7_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'swe7_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'swe7_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'swe7_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'swe7_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'swe7_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'swe7_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -3847,3 +3847,567 @@ E0
|
||||
#
|
||||
# End of 5.6 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=tis620;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'tis620_thai_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE tis620_thai_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=tis620 COLLATE=tis620_thai_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'tis620_thai_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'tis620_thai_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'tis620_thai_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'tis620_thai_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'tis620_thai_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'tis620_thai_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_thai_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_thai_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'tis620_thai_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_thai_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_thai_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'tis620_thai_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE tis620_thai_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=tis620 COLLATE=tis620_thai_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'tis620_thai_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'tis620_thai_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'tis620_thai_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'tis620_thai_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'tis620_thai_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'tis620_thai_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_thai_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_thai_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'tis620_thai_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_thai_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_thai_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'tis620_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE tis620_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=tis620 COLLATE=tis620_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'tis620_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'tis620_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'tis620_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'tis620_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'tis620_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'tis620_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'tis620_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'tis620_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'tis620_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'tis620_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'tis620_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'tis620_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'tis620_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'tis620_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'tis620_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'tis620_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE tis620_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=tis620 COLLATE=tis620_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'tis620_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'tis620_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'tis620_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'tis620_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'tis620_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'tis620_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'tis620_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'tis620_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'tis620_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'tis620_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'tis620_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'tis620_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'tis620_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'tis620_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'tis620_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'tis620_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -5660,3 +5660,567 @@ Warning 1292 Truncated incorrect INTEGER value: '1IJ3'
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=ucs2;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'ucs2_general_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE ucs2_general_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=ucs2 COLLATE=ucs2_general_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
00610062006300200020 abc
|
||||
006100620063 abc
|
||||
0061002000200020 a
|
||||
002000610020 a
|
||||
00200061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'ucs2_general_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
00610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
0061006200630020 abc
|
||||
00610062006300200020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ucs2_general_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061 a
|
||||
006100200020 a
|
||||
0061002000200020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
0061002000200020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'ucs2_general_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
00610061 1
|
||||
0061006100200020 1
|
||||
00610062 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0041000000000000000000000000000000000000
|
||||
0041002000200000000000000000000000000000
|
||||
0020004100000000000000000000000000000000
|
||||
0020004100200000000000000000000000000000
|
||||
0041002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'ucs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'ucs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc '))
|
||||
0061006200630020
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc '))
|
||||
00610062006300200020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ucs2_general_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'ucs2_general_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'ucs2_general_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE ucs2_general_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=ucs2 COLLATE=ucs2_general_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
00610062006300200020 abc
|
||||
006100620063 abc
|
||||
0061002000200020 a
|
||||
002000610020 a
|
||||
00200061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'ucs2_general_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
00610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
0061006200630020 abc
|
||||
00610062006300200020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ucs2_general_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061 a
|
||||
006100200020 a
|
||||
0061002000200020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
0061002000200020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'ucs2_general_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
00610061 1
|
||||
0061006100200020 1
|
||||
00610062 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0041000000000000000000000000000000000000
|
||||
0041002000200000000000000000000000000000
|
||||
0020004100000000000000000000000000000000
|
||||
0020004100200000000000000000000000000000
|
||||
0041002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'ucs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'ucs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc '))
|
||||
0061006200630020
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc '))
|
||||
00610062006300200020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ucs2_general_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'ucs2_general_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'ucs2_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE ucs2_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=ucs2 COLLATE=ucs2_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
00610062006300200020 abc
|
||||
006100620063 abc
|
||||
0061002000200020 a
|
||||
002000610020 a
|
||||
00200061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'ucs2_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
00610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
0061006200630020 abc
|
||||
00610062006300200020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ucs2_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061 a
|
||||
006100200020 a
|
||||
0061002000200020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
0061002000200020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'ucs2_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
00610061 1
|
||||
0061006100200020 1
|
||||
00610062 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0061000000000000000000000000000000000000
|
||||
0061002000200000000000000000000000000000
|
||||
0020006100000000000000000000000000000000
|
||||
0020006100200000000000000000000000000000
|
||||
0061002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'ucs2_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'ucs2_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'ucs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'ucs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'ucs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'ucs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'ucs2_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'ucs2_nopad_bin', 'abc '))
|
||||
0061006200630020
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'ucs2_nopad_bin', 'abc '))
|
||||
00610062006300200020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ucs2_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'ucs2_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'ucs2_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE ucs2_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=ucs2 COLLATE=ucs2_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
00610062006300200020 abc
|
||||
006100620063 abc
|
||||
0061002000200020 a
|
||||
002000610020 a
|
||||
00200061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'ucs2_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
00610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
0061006200630020 abc
|
||||
00610062006300200020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ucs2_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061 a
|
||||
006100200020 a
|
||||
0061002000200020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
0061002000200020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'ucs2_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
00610061 1
|
||||
0061006100200020 1
|
||||
00610062 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0061000000000000000000000000000000000000
|
||||
0061002000200000000000000000000000000000
|
||||
0020006100000000000000000000000000000000
|
||||
0020006100200000000000000000000000000000
|
||||
0061002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'ucs2_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'ucs2_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'ucs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'ucs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'ucs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'ucs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'ucs2_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'ucs2_nopad_bin', 'abc '))
|
||||
0061006200630020
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'ucs2_nopad_bin', 'abc '))
|
||||
00610062006300200020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ucs2_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'ucs2_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ucs2_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -26219,7 +26219,7 @@ DROP TABLE t1;
|
||||
# End of 10.1 tests
|
||||
#
|
||||
#
|
||||
# End of 10.2 tests
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9842 LOAD DATA INFILE does not work well with a TEXT column when using sjis
|
||||
@@ -26237,5 +26237,563 @@ HEX(a)
|
||||
3F3F
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=ujis;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'ujis_japanese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE ujis_japanese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=ujis COLLATE=ujis_japanese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'ujis_japanese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ujis_japanese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'ujis_japanese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'ujis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'ujis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ujis_japanese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'ujis_japanese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'ujis_japanese_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE ujis_japanese_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=ujis COLLATE=ujis_japanese_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'ujis_japanese_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ujis_japanese_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'ujis_japanese_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
41000000000000000000
|
||||
41202000000000000000
|
||||
20410000000000000000
|
||||
20412000000000000000
|
||||
41202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'ujis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'ujis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ujis_japanese_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'ujis_japanese_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_japanese_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_japanese_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'ujis_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE ujis_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=ujis COLLATE=ujis_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'ujis_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ujis_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'ujis_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'ujis_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'ujis_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'ujis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'ujis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'ujis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'ujis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'ujis_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'ujis_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'ujis_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'ujis_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ujis_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'ujis_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'ujis_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE ujis_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=ujis COLLATE=ujis_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'ujis_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ujis_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'ujis_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
61000000000000000000
|
||||
61202000000000000000
|
||||
20610000000000000000
|
||||
20612000000000000000
|
||||
61202020000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'ujis_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'ujis_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'ujis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'ujis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'ujis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'ujis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'ujis_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'ujis_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'ujis_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'ujis_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'ujis_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'ujis_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'ujis_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -2201,3 +2201,567 @@ Warning 1292 Truncated incorrect INTEGER value: '1IJ3'
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=utf16;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf16_general_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf16_general_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf16 COLLATE=utf16_general_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
00610062006300200020 abc
|
||||
006100620063 abc
|
||||
0061002000200020 a
|
||||
002000610020 a
|
||||
00200061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf16_general_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
00610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
0061006200630020 abc
|
||||
00610062006300200020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16_general_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061 a
|
||||
006100200020 a
|
||||
0061002000200020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
0061002000200020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf16_general_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
00610061 1
|
||||
0061006100200020 1
|
||||
00610062 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0041000000000000000000000000000000000000
|
||||
0041002000200000000000000000000000000000
|
||||
0020004100000000000000000000000000000000
|
||||
0020004100200000000000000000000000000000
|
||||
0041002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf16_general_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf16_general_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf16_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf16_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf16_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf16_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc '))
|
||||
0061006200630020
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc '))
|
||||
00610062006300200020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16_general_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf16_general_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf16_general_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf16_general_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf16 COLLATE=utf16_general_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
00610062006300200020 abc
|
||||
006100620063 abc
|
||||
0061002000200020 a
|
||||
002000610020 a
|
||||
00200061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf16_general_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
00610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
0061006200630020 abc
|
||||
00610062006300200020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16_general_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061 a
|
||||
006100200020 a
|
||||
0061002000200020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
0061002000200020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf16_general_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
00610061 1
|
||||
0061006100200020 1
|
||||
00610062 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0041000000000000000000000000000000000000
|
||||
0041002000200000000000000000000000000000
|
||||
0020004100000000000000000000000000000000
|
||||
0020004100200000000000000000000000000000
|
||||
0041002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf16_general_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf16_general_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf16_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf16_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf16_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf16_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc '))
|
||||
0061006200630020
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc '))
|
||||
00610062006300200020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16_general_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf16_general_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf16_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf16_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf16 COLLATE=utf16_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
00610062006300200020 abc
|
||||
006100620063 abc
|
||||
0061002000200020 a
|
||||
002000610020 a
|
||||
00200061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf16_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
00610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
0061006200630020 abc
|
||||
00610062006300200020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061 a
|
||||
006100200020 a
|
||||
0061002000200020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
0061002000200020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf16_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
00610061 1
|
||||
0061006100200020 1
|
||||
00610062 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
000061000000000000000000000000000000000000000000000000000000
|
||||
000061000020000020000000000000000000000000000000000000000000
|
||||
000020000061000000000000000000000000000000000000000000000000
|
||||
000020000061000020000000000000000000000000000000000000000000
|
||||
000061000020000020000020000000000000000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf16_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf16_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf16_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf16_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf16_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf16_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf16_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf16_nopad_bin', 'abc '))
|
||||
0061006200630020
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf16_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf16_nopad_bin', 'abc '))
|
||||
00610062006300200020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf16_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf16_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf16_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf16 COLLATE=utf16_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
00610062006300200020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
00610062006300200020 abc
|
||||
006100620063 abc
|
||||
0061002000200020 a
|
||||
002000610020 a
|
||||
00200061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf16_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
00610020 a
|
||||
0061002000200020 a
|
||||
006100620063 abc
|
||||
0061006200630020 abc
|
||||
00610062006300200020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
00200061 a
|
||||
002000610020 a
|
||||
0061 a
|
||||
006100200020 a
|
||||
0061002000200020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
0061002000200020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf16_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
00610061 1
|
||||
0061006100200020 1
|
||||
00610062 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
000061000000000000000000000000000000000000000000000000000000
|
||||
000061000020000020000000000000000000000000000000000000000000
|
||||
000020000061000000000000000000000000000000000000000000000000
|
||||
000020000061000020000000000000000000000000000000000000000000
|
||||
000061000020000020000020000000000000000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf16_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf16_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf16_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf16_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf16_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf16_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf16_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf16_nopad_bin', 'abc '))
|
||||
0061006200630020
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf16_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf16_nopad_bin', 'abc '))
|
||||
00610062006300200020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf16_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -2393,3 +2393,567 @@ Warning 1292 Truncated incorrect INTEGER value: '1IJ3'
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=utf16le;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf16le_general_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf16le_general_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf16le COLLATE=utf16le_general_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
6100200020002000 a
|
||||
610062006300 abc
|
||||
61006200630020002000 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
6100200020002000 a
|
||||
610062006300 abc
|
||||
61006200630020002000 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
61006200630020002000 abc
|
||||
610062006300 abc
|
||||
6100200020002000 a
|
||||
200061002000 a
|
||||
20006100 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf16le_general_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
61002000 a
|
||||
6100200020002000 a
|
||||
610062006300 abc
|
||||
6100620063002000 abc
|
||||
61006200630020002000 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16le_general_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
6100 a
|
||||
610020002000 a
|
||||
6100200020002000 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
6100200020002000 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf16le_general_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
61006100 1
|
||||
6100610020002000 1
|
||||
61006200 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0041000000000000000000000000000000000000
|
||||
0041002000200000000000000000000000000000
|
||||
0020004100000000000000000000000000000000
|
||||
0020004100200000000000000000000000000000
|
||||
0041002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf16le_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf16le_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc '))
|
||||
6100620063002000
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc '))
|
||||
61006200630020002000
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16le_general_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf16le_general_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf16le_general_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf16le_general_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf16le COLLATE=utf16le_general_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
6100200020002000 a
|
||||
610062006300 abc
|
||||
61006200630020002000 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
6100200020002000 a
|
||||
610062006300 abc
|
||||
61006200630020002000 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
61006200630020002000 abc
|
||||
610062006300 abc
|
||||
6100200020002000 a
|
||||
200061002000 a
|
||||
20006100 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf16le_general_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
61002000 a
|
||||
6100200020002000 a
|
||||
610062006300 abc
|
||||
6100620063002000 abc
|
||||
61006200630020002000 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16le_general_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
6100 a
|
||||
610020002000 a
|
||||
6100200020002000 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
6100200020002000 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf16le_general_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
61006100 1
|
||||
6100610020002000 1
|
||||
61006200 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0041000000000000000000000000000000000000
|
||||
0041002000200000000000000000000000000000
|
||||
0020004100000000000000000000000000000000
|
||||
0020004100200000000000000000000000000000
|
||||
0041002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf16le_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf16le_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc '))
|
||||
6100620063002000
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc '))
|
||||
61006200630020002000
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16le_general_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf16le_general_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf16le_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf16le_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf16le COLLATE=utf16le_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
6100200020002000 a
|
||||
610062006300 abc
|
||||
61006200630020002000 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
6100200020002000 a
|
||||
610062006300 abc
|
||||
61006200630020002000 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
61006200630020002000 abc
|
||||
610062006300 abc
|
||||
6100200020002000 a
|
||||
200061002000 a
|
||||
20006100 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf16le_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
61002000 a
|
||||
6100200020002000 a
|
||||
610062006300 abc
|
||||
6100620063002000 abc
|
||||
61006200630020002000 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16le_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
6100 a
|
||||
610020002000 a
|
||||
6100200020002000 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
6100200020002000 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf16le_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
61006100 1
|
||||
6100610020002000 1
|
||||
61006200 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
000061000000000000000000000000000000000000000000000000000000
|
||||
000061000020000020000000000000000000000000000000000000000000
|
||||
000020000061000000000000000000000000000000000000000000000000
|
||||
000020000061000020000000000000000000000000000000000000000000
|
||||
000061000020000020000020000000000000000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf16le_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf16le_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf16le_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf16le_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf16le_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf16le_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf16le_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf16le_nopad_bin', 'abc '))
|
||||
6100620063002000
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf16le_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf16le_nopad_bin', 'abc '))
|
||||
61006200630020002000
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16le_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf16le_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf16le_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf16le_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf16le COLLATE=utf16le_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
6100200020002000 a
|
||||
610062006300 abc
|
||||
61006200630020002000 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
6100200020002000 a
|
||||
610062006300 abc
|
||||
61006200630020002000 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
61006200630020002000 abc
|
||||
610062006300 abc
|
||||
6100200020002000 a
|
||||
200061002000 a
|
||||
20006100 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf16le_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
61002000 a
|
||||
6100200020002000 a
|
||||
610062006300 abc
|
||||
6100620063002000 abc
|
||||
61006200630020002000 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16le_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
20006100 a
|
||||
200061002000 a
|
||||
6100 a
|
||||
610020002000 a
|
||||
6100200020002000 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
6100200020002000 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf16le_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
61006100 1
|
||||
6100610020002000 1
|
||||
61006200 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
000061000000000000000000000000000000000000000000000000000000
|
||||
000061000020000020000000000000000000000000000000000000000000
|
||||
000020000061000000000000000000000000000000000000000000000000
|
||||
000020000061000020000000000000000000000000000000000000000000
|
||||
000061000020000020000020000000000000000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf16le_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf16le_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf16le_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf16le_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf16le_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf16le_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf16le_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf16le_nopad_bin', 'abc '))
|
||||
6100620063002000
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf16le_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf16le_nopad_bin', 'abc '))
|
||||
61006200630020002000
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf16le_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf16le_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf16le_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -2237,3 +2237,567 @@ Warning 1292 Truncated incorrect INTEGER value: '1IJ3'
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET character_set_connection=utf32;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf32_general_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf32_general_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf32 COLLATE=utf32_general_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
00000061000000200000002000000020 a
|
||||
000000610000006200000063 abc
|
||||
0000006100000062000000630000002000000020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
00000061000000200000002000000020 a
|
||||
000000610000006200000063 abc
|
||||
0000006100000062000000630000002000000020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
0000006100000062000000630000002000000020 abc
|
||||
000000610000006200000063 abc
|
||||
00000061000000200000002000000020 a
|
||||
000000200000006100000020 a
|
||||
0000002000000061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf32_general_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
0000006100000020 a
|
||||
00000061000000200000002000000020 a
|
||||
000000610000006200000063 abc
|
||||
00000061000000620000006300000020 abc
|
||||
0000006100000062000000630000002000000020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_general_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
00000061 a
|
||||
000000610000002000000020 a
|
||||
00000061000000200000002000000020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
00000061000000200000002000000020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf32_general_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
0000006100000061 1
|
||||
00000061000000610000002000000020 1
|
||||
0000006100000062 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0041000000000000000000000000000000000000
|
||||
0041002000200000000000000000000000000000
|
||||
0020004100000000000000000000000000000000
|
||||
0020004100200000000000000000000000000000
|
||||
0041002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc '))
|
||||
00000061000000620000006300000020
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc '))
|
||||
0000006100000062000000630000002000000020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_general_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf32_general_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf32_general_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf32_general_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf32 COLLATE=utf32_general_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
00000061000000200000002000000020 a
|
||||
000000610000006200000063 abc
|
||||
0000006100000062000000630000002000000020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
00000061000000200000002000000020 a
|
||||
000000610000006200000063 abc
|
||||
0000006100000062000000630000002000000020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
0000006100000062000000630000002000000020 abc
|
||||
000000610000006200000063 abc
|
||||
00000061000000200000002000000020 a
|
||||
000000200000006100000020 a
|
||||
0000002000000061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf32_general_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
0000006100000020 a
|
||||
00000061000000200000002000000020 a
|
||||
000000610000006200000063 abc
|
||||
00000061000000620000006300000020 abc
|
||||
0000006100000062000000630000002000000020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_general_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
00000061 a
|
||||
000000610000002000000020 a
|
||||
00000061000000200000002000000020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
00000061000000200000002000000020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf32_general_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
0000006100000061 1
|
||||
00000061000000610000002000000020 1
|
||||
0000006100000062 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0041000000000000000000000000000000000000
|
||||
0041002000200000000000000000000000000000
|
||||
0020004100000000000000000000000000000000
|
||||
0020004100200000000000000000000000000000
|
||||
0041002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc '))
|
||||
00000061000000620000006300000020
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc '))
|
||||
0000006100000062000000630000002000000020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_general_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf32_general_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf32_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf32_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf32 COLLATE=utf32_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
00000061000000200000002000000020 a
|
||||
000000610000006200000063 abc
|
||||
0000006100000062000000630000002000000020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
00000061000000200000002000000020 a
|
||||
000000610000006200000063 abc
|
||||
0000006100000062000000630000002000000020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
0000006100000062000000630000002000000020 abc
|
||||
000000610000006200000063 abc
|
||||
00000061000000200000002000000020 a
|
||||
000000200000006100000020 a
|
||||
0000002000000061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf32_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
0000006100000020 a
|
||||
00000061000000200000002000000020 a
|
||||
000000610000006200000063 abc
|
||||
00000061000000620000006300000020 abc
|
||||
0000006100000062000000630000002000000020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
00000061 a
|
||||
000000610000002000000020 a
|
||||
00000061000000200000002000000020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
00000061000000200000002000000020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf32_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
0000006100000061 1
|
||||
00000061000000610000002000000020 1
|
||||
0000006100000062 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
000061000000000000000000000000000000000000000000000000000000
|
||||
000061000020000020000000000000000000000000000000000000000000
|
||||
000020000061000000000000000000000000000000000000000000000000
|
||||
000020000061000020000000000000000000000000000000000000000000
|
||||
000061000020000020000020000000000000000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc '))
|
||||
00000061000000620000006300000020
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc '))
|
||||
0000006100000062000000630000002000000020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf32_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf32_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf32_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf32 COLLATE=utf32_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
00000061000000200000002000000020 a
|
||||
000000610000006200000063 abc
|
||||
0000006100000062000000630000002000000020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
00000061000000200000002000000020 a
|
||||
000000610000006200000063 abc
|
||||
0000006100000062000000630000002000000020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
0000006100000062000000630000002000000020 abc
|
||||
000000610000006200000063 abc
|
||||
00000061000000200000002000000020 a
|
||||
000000200000006100000020 a
|
||||
0000002000000061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf32_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
0000006100000020 a
|
||||
00000061000000200000002000000020 a
|
||||
000000610000006200000063 abc
|
||||
00000061000000620000006300000020 abc
|
||||
0000006100000062000000630000002000000020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
0000002000000061 a
|
||||
000000200000006100000020 a
|
||||
00000061 a
|
||||
000000610000002000000020 a
|
||||
00000061000000200000002000000020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
00000061000000200000002000000020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf32_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
0000006100000061 1
|
||||
00000061000000610000002000000020 1
|
||||
0000006100000062 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
000061000000000000000000000000000000000000000000000000000000
|
||||
000061000020000020000000000000000000000000000000000000000000
|
||||
000020000061000000000000000000000000000000000000000000000000
|
||||
000020000061000020000000000000000000000000000000000000000000
|
||||
000061000020000020000020000000000000000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc '))
|
||||
00000061000000620000006300000020
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc '))
|
||||
0000006100000062000000630000002000000020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf32_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -2275,7 +2275,7 @@ SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`clipid` int(11) NOT NULL,
|
||||
`mos` tinyint(4) DEFAULT '0',
|
||||
`mos` tinyint(4) DEFAULT 0,
|
||||
`Tape` tinytext DEFAULT NULL,
|
||||
PRIMARY KEY (`clipid`),
|
||||
KEY `tape` (`Tape`(255))
|
||||
@@ -10583,5 +10583,562 @@ HEX(a)
|
||||
C39F
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf8_general_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf8_general_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf8_general_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8_general_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf8_general_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0041000000000000000000000000000000000000
|
||||
0041002000200000000000000000000000000000
|
||||
0020004100000000000000000000000000000000
|
||||
0020004100200000000000000000000000000000
|
||||
0041002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf8_general_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf8_general_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8_general_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf8_general_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf8_general_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf8_general_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_general_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf8_general_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8_general_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf8_general_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0041000000000000000000000000000000000000
|
||||
0041002000200000000000000000000000000000
|
||||
0020004100000000000000000000000000000000
|
||||
0020004100200000000000000000000000000000
|
||||
0041002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf8_general_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf8_general_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8_general_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf8_general_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf8_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf8_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf8_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf8_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0061000000000000000000000000000000000000
|
||||
0061002000200000000000000000000000000000
|
||||
0020006100000000000000000000000000000000
|
||||
0020006100200000000000000000000000000000
|
||||
0061002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf8_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf8_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf8_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf8_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf8_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf8_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf8_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf8_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf8_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf8_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf8_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0061000000000000000000000000000000000000
|
||||
0061002000200000000000000000000000000000
|
||||
0020006100000000000000000000000000000000
|
||||
0020006100200000000000000000000000000000
|
||||
0061002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf8_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf8_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf8_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf8_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf8_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf8_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf8_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -2387,7 +2387,7 @@ SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`clipid` int(11) NOT NULL,
|
||||
`mos` tinyint(4) DEFAULT '0',
|
||||
`mos` tinyint(4) DEFAULT 0,
|
||||
`Tape` tinytext DEFAULT NULL,
|
||||
PRIMARY KEY (`clipid`),
|
||||
KEY `tape` (`Tape`(250))
|
||||
@@ -3457,5 +3457,562 @@ F09F988E
|
||||
3F3F3F
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-9711 NO PAD Collatons
|
||||
#
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf8mb4_general_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf8mb4_general_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf8mb4_general_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8mb4_general_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf8mb4_general_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0041000000000000000000000000000000000000
|
||||
0041002000200000000000000000000000000000
|
||||
0020004100000000000000000000000000000000
|
||||
0020004100200000000000000000000000000000
|
||||
0041002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf8mb4_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf8mb4_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8mb4_general_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf8mb4_general_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf8mb4_general_nopad_ci';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf8mb4_general_nopad_ci NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_nopad_ci
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf8mb4_general_nopad_ci';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8mb4_general_nopad_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf8mb4_general_nopad_ci';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
0041000000000000000000000000000000000000
|
||||
0041002000200000000000000000000000000000
|
||||
0020004100000000000000000000000000000000
|
||||
0020004100200000000000000000000000000000
|
||||
0041002000200020000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf8mb4_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf8mb4_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8mb4_general_ci';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf8mb4_general_nopad_ci';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_general_ci';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_general_nopad_ci';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
SET STORAGE_ENGINE=MyISAM;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf8mb4_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf8mb4_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf8mb4_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8mb4_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf8mb4_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
000061000000000000000000000000000000000000000000000000000000
|
||||
000061000020000020000000000000000000000000000000000000000000
|
||||
000020000061000000000000000000000000000000000000000000000000
|
||||
000020000061000020000000000000000000000000000000000000000000
|
||||
000061000020000020000020000000000000000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf8mb4_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf8mb4_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8mb4_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf8mb4_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=HEAP;
|
||||
#
|
||||
# Start of ctype_pad.inc
|
||||
#
|
||||
#
|
||||
# Unique indexes
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf8mb4_nopad_bin';
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(10) COLLATE utf8mb4_nopad_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_nopad_bin
|
||||
INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM t1 ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
6162632020 abc
|
||||
SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC;
|
||||
HEX(a) a
|
||||
6162632020 abc
|
||||
616263 abc
|
||||
61202020 a
|
||||
206120 a
|
||||
2061 a
|
||||
#
|
||||
# UNION
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf8mb4_nopad_bin';
|
||||
INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a ');
|
||||
SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
6120 a
|
||||
61202020 a
|
||||
616263 abc
|
||||
61626320 abc
|
||||
6162632020 abc
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# DISTINCT, COUNT, MAX
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8mb4_nopad_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a ');
|
||||
SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td;
|
||||
HEX(a) a
|
||||
2061 a
|
||||
206120 a
|
||||
61 a
|
||||
612020 a
|
||||
61202020 a
|
||||
SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a;
|
||||
COUNT(DISTINCT a)
|
||||
5
|
||||
SELECT HEX(MAX(a)), MAX(a) FROM t1;
|
||||
HEX(MAX(a)) MAX(a)
|
||||
61202020 a
|
||||
#
|
||||
# GROUP BY
|
||||
#
|
||||
CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf8mb4_nopad_bin';
|
||||
INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er ');
|
||||
SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td;
|
||||
HEX(a) cnt
|
||||
6161 1
|
||||
61612020 1
|
||||
6162 2
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Weights
|
||||
#
|
||||
SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1;
|
||||
HEX(WEIGHT_STRING(a AS CHAR(10)))
|
||||
000061000000000000000000000000000000000000000000000000000000
|
||||
000061000020000020000000000000000000000000000000000000000000
|
||||
000020000061000000000000000000000000000000000000000000000000
|
||||
000020000061000020000000000000000000000000000000000000000000
|
||||
000061000020000020000020000000000000000000000000000000000000
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# IF, CASE, LEAST
|
||||
#
|
||||
SELECT IF('abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ', 'pad', 'nopad');
|
||||
IF('abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ', 'pad', 'nopad')
|
||||
nopad
|
||||
SELECT CASE 'abc' COLLATE 'utf8mb4_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE 'abc' COLLATE 'utf8mb4_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END;
|
||||
CASE WHEN 'abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END
|
||||
nopad
|
||||
SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc '));
|
||||
HEX(LEAST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc '))
|
||||
61626320
|
||||
SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc '));
|
||||
HEX(GREATEST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc '))
|
||||
6162632020
|
||||
#
|
||||
# Collation mix
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf8mb4_bin';
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf8mb4_nopad_bin';
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_bin';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf8mb4_nopad_bin';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of ctype_pad.inc
|
||||
#
|
||||
SET STORAGE_ENGINE=Default;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
||||
@@ -2347,7 +2347,7 @@ SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`clipid` int(11) NOT NULL,
|
||||
`mos` tinyint(4) DEFAULT '0',
|
||||
`mos` tinyint(4) DEFAULT 0,
|
||||
`Tape` tinytext DEFAULT NULL,
|
||||
PRIMARY KEY (`clipid`),
|
||||
KEY `tape` (`Tape`(191))
|
||||
|
||||
@@ -2347,7 +2347,7 @@ SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`clipid` int(11) NOT NULL,
|
||||
`mos` tinyint(4) DEFAULT '0',
|
||||
`mos` tinyint(4) DEFAULT 0,
|
||||
`Tape` tinytext DEFAULT NULL,
|
||||
PRIMARY KEY (`clipid`),
|
||||
KEY `tape` (`Tape`(250))
|
||||
|
||||
@@ -253,7 +253,7 @@ CREATE or replace TABLE t1 (event_time TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIM
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6)
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP(6)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
CREATE or replace TABLE t1 (event_time TIMESTAMP(6) NOT NULL DEFAULT SYSDATE(2) ON UPDATE CURRENT_TIMESTAMP);
|
||||
SHOW CREATE TABLE t1;
|
||||
@@ -269,7 +269,7 @@ create or replace table t1 (a int default 1, b int default (a+1), c int default
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT '1',
|
||||
`a` int(11) DEFAULT 1,
|
||||
`b` int(11) DEFAULT (a+1),
|
||||
`c` int(11) DEFAULT (a+b)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
@@ -343,8 +343,8 @@ show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` int(11) DEFAULT '1',
|
||||
`c` int(11) DEFAULT '-1',
|
||||
`b` int(11) DEFAULT 1,
|
||||
`c` int(11) DEFAULT -1,
|
||||
`d` int(11) DEFAULT (1+1),
|
||||
`e` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`f` int(11) DEFAULT (1+1+1),
|
||||
@@ -356,8 +356,8 @@ show create table t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` int(11) DEFAULT '1',
|
||||
`c` int(11) DEFAULT '-1',
|
||||
`b` int(11) DEFAULT 1,
|
||||
`c` int(11) DEFAULT -1,
|
||||
`d` int(11) DEFAULT (1+1),
|
||||
`e` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`f` int(11) DEFAULT (1+1+1),
|
||||
@@ -374,9 +374,9 @@ show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT (1----1),
|
||||
`b` int(11) DEFAULT '-1',
|
||||
`c` int(11) DEFAULT '1',
|
||||
`e` int(11) DEFAULT '1'
|
||||
`b` int(11) DEFAULT -1,
|
||||
`c` int(11) DEFAULT 1,
|
||||
`e` int(11) DEFAULT 1
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
insert into t1 values();
|
||||
insert into t1 values();
|
||||
@@ -409,7 +409,6 @@ create or replace table t1 (a int not null, b int default (a+1));
|
||||
create or replace table t1 (a int default a);
|
||||
ERROR 01000: Expression for field `a` is refering to uninitialized field `a`
|
||||
create or replace table t1 (a int default b, b int default (1+1));
|
||||
ERROR 01000: Expression for field `a` is refering to uninitialized field `b`
|
||||
create or replace table t1 (a int default 1, b int as (c), c int as (a+1));
|
||||
ERROR 01000: Expression for field `b` is refering to uninitialized field `c`
|
||||
CREATE TABLE t1 (a INT DEFAULT (DEFAULT(a)));
|
||||
@@ -520,7 +519,7 @@ execute stmt using @a;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT '1'
|
||||
`a` int(11) DEFAULT 1
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
set @a=-1;
|
||||
@@ -528,7 +527,7 @@ execute stmt using @a;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT '-1'
|
||||
`a` int(11) DEFAULT -1
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
@@ -538,8 +537,8 @@ execute stmt using @a,@b;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT '1',
|
||||
`b` int(11) DEFAULT '2'
|
||||
`a` int(11) DEFAULT 1,
|
||||
`b` int(11) DEFAULT 2
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
@@ -570,12 +569,12 @@ d03 DATETIME DEFAULT (((TIMESTAMP'2001-01-01 10:20:30')))
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`i01` int(11) DEFAULT '1',
|
||||
`i02` int(11) DEFAULT '14649',
|
||||
`i03` int(11) DEFAULT '1',
|
||||
`i04` int(11) DEFAULT '1',
|
||||
`i01` int(11) DEFAULT 1,
|
||||
`i02` int(11) DEFAULT 14649,
|
||||
`i03` int(11) DEFAULT 1,
|
||||
`i04` int(11) DEFAULT 1,
|
||||
`i05` int(11) DEFAULT NULL,
|
||||
`f01` double DEFAULT '3.141592653589793',
|
||||
`f01` double DEFAULT 3.141592653589793,
|
||||
`s01` varchar(10) DEFAULT 'test',
|
||||
`s02` varchar(10) DEFAULT 'test',
|
||||
`s03` varchar(10) DEFAULT '@',
|
||||
@@ -672,7 +671,7 @@ CREATE TABLE t1 (a INT DEFAULT 1 NOT NULL);
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) NOT NULL DEFAULT '1'
|
||||
`a` int(11) NOT NULL DEFAULT 1
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (DEFAULT);
|
||||
SELECT * FROM t1;
|
||||
@@ -697,7 +696,7 @@ CREATE TABLE t1 (a INT DEFAULT '1' NOT NULL);
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) NOT NULL DEFAULT '1'
|
||||
`a` int(11) NOT NULL DEFAULT 1
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (DEFAULT);
|
||||
SELECT * FROM t1;
|
||||
@@ -755,7 +754,7 @@ Note 1265 Data truncated for column 'a' at row 1
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT '1'
|
||||
`a` int(11) DEFAULT 1
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (DEFAULT);
|
||||
SELECT * FROM t1;
|
||||
@@ -799,7 +798,7 @@ CREATE TABLE t1 (a INT DEFAULT 0x61 NOT NULL);
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) NOT NULL DEFAULT '97'
|
||||
`a` int(11) NOT NULL DEFAULT 97
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (DEFAULT);
|
||||
SELECT * FROM t1;
|
||||
@@ -923,7 +922,7 @@ SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT DEFAULT(b),
|
||||
`b` int(11) DEFAULT '1'
|
||||
`b` int(11) DEFAULT 1
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (DEFAULT, DEFAULT);
|
||||
SELECT * FROM t1;
|
||||
@@ -934,7 +933,7 @@ CREATE TABLE t1 (a INT DEFAULT 1, b INT DEFAULT(DEFAULT(a)));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT '1',
|
||||
`a` int(11) DEFAULT 1,
|
||||
`b` int(11) DEFAULT DEFAULT(a)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (DEFAULT, DEFAULT);
|
||||
@@ -1084,33 +1083,6 @@ a b
|
||||
20010101102030 2001
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Miscelaneous SQL standard <default option> variants
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(30) DEFAULT CURRENT_USER);
|
||||
ERROR HY000: Function or expression 'current_user()' cannot be used in the DEFAULT clause of `a`
|
||||
CREATE TABLE t1 (a VARCHAR(30) DEFAULT CURRENT_ROLE);
|
||||
ERROR HY000: Function or expression 'current_role()' cannot be used in the DEFAULT clause of `a`
|
||||
#
|
||||
# Other Item_func_sysconst derived functions
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(30) DEFAULT DATABASE());
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(30) DEFAULT DATABASE()
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ();
|
||||
USE INFORMATION_SCHEMA;
|
||||
INSERT INTO test.t1 VALUES ();
|
||||
USE test;
|
||||
INSERT INTO t1 VALUES ();
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
test
|
||||
information_schema
|
||||
test
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Check DEFAULT() function
|
||||
#
|
||||
CREATE TABLE `t1` (`a` int(11) DEFAULT (3+3),`b` int(11) DEFAULT '1000');
|
||||
@@ -1118,7 +1090,7 @@ SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT (3+3),
|
||||
`b` int(11) DEFAULT '1000'
|
||||
`b` int(11) DEFAULT 1000
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
insert into t1 values (1,1),(2,2);
|
||||
insert into t1 values (default,default);
|
||||
@@ -1400,8 +1372,6 @@ SELECT * FROM t1;
|
||||
a b c
|
||||
01,5,2013 %d,%m,%Y 2013-05-01
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(30), b VARCHAR(30) DEFAULT DATE_FORMAT(a,'%W %M %Y'));
|
||||
ERROR HY000: Function or expression 'date_format()' cannot be used in the DEFAULT clause of `b`
|
||||
# Item_datefunc
|
||||
SET time_zone='-10:00';
|
||||
SET timestamp=UNIX_TIMESTAMP('2001-01-01 23:59:59');
|
||||
@@ -1835,10 +1805,6 @@ SELECT * FROM t1;
|
||||
a b
|
||||
2008-04-01 2
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE, b VARCHAR(30) DEFAULT DAYNAME(a));
|
||||
ERROR HY000: Function or expression 'dayname()' cannot be used in the DEFAULT clause of `b`
|
||||
CREATE TABLE t1 (a DATE, b VARCHAR(30) DEFAULT MONTHNAME(a));
|
||||
ERROR HY000: Function or expression 'monthname()' cannot be used in the DEFAULT clause of `b`
|
||||
CREATE TABLE t1 (a DATE, b INT DEFAULT EXTRACT(YEAR FROM a));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
@@ -3068,7 +3034,7 @@ t1 CREATE TABLE `t1` (
|
||||
`a` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT concat('A')
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
create table t1 (a int default 1, b int default (1+1), c int);
|
||||
create table t1 (a int default 1, b int default (rand()*0+2), c int);
|
||||
insert t1 (c) values (a);
|
||||
insert t1 (c) values (b);
|
||||
select * from t1;
|
||||
@@ -3080,7 +3046,7 @@ create table t1 (a int default 1, b int default (1+1), c int);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT '1',
|
||||
`a` int(11) DEFAULT 1,
|
||||
`b` int(11) DEFAULT (1+1),
|
||||
`c` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
@@ -3092,7 +3058,25 @@ show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT (2+3),
|
||||
`b` int(11) DEFAULT '4',
|
||||
`b` int(11) DEFAULT 4,
|
||||
`c` int(11) DEFAULT (-a)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 (a int default 5 check (a>10), b int default (5+5), c int as (a+b));
|
||||
create table t2 as select a, b, c from t1;
|
||||
create table t3 as select max(a), max(b), max(c) from t1;
|
||||
show create table t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` int(11) DEFAULT 5 CHECK (a>10),
|
||||
`b` int(11) DEFAULT (5+5),
|
||||
`c` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
show create table t3;
|
||||
Table Create Table
|
||||
t3 CREATE TABLE `t3` (
|
||||
`max(a)` int(11) DEFAULT NULL,
|
||||
`max(b)` int(11) DEFAULT NULL,
|
||||
`max(c)` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1, t2, t3;
|
||||
|
||||
94
mysql-test/r/default_session.result
Normal file
94
mysql-test/r/default_session.result
Normal file
@@ -0,0 +1,94 @@
|
||||
create database mysqltest1;
|
||||
create user ''@localhost;
|
||||
create user foo@localhost;
|
||||
create role bar;
|
||||
grant select on *.* to ''@localhost;
|
||||
grant select,insert on *.* to foo@localhost;
|
||||
grant select,insert on *.* to bar;
|
||||
grant bar to ''@localhost;
|
||||
create table t1 (n varchar(100),
|
||||
u varchar(100) default user(),
|
||||
cu varchar(100) default current_user(),
|
||||
cr varchar(100) default current_role(),
|
||||
d varchar(100) default database());
|
||||
create definer=foo@localhost view mysqltest1.v1 as select * from t1;
|
||||
create definer=bar view v2 as select * from t1;
|
||||
create view v3 as select * from v2;
|
||||
create definer=foo@localhost view mysqltest1.v4 as select default(n),default(u),default(cu),default(cr), default(d) from t1;
|
||||
create definer=bar view v5 as select default(n),default(u),default(cu),default(cr), default(d) from t1;
|
||||
create view v6 as select * from v5;
|
||||
insert t1 (n) values ('t1');
|
||||
insert mysqltest1.v1 (n) values ('v1');
|
||||
insert v2 (n) values ('v2');
|
||||
insert v3 (n) values ('v3');
|
||||
select default(n),default(u),default(cu),default(cr), default(d) from t1 limit 1;
|
||||
default(n) default(u) default(cu) default(cr) default(d)
|
||||
NULL root@localhost root@localhost NULL test
|
||||
select * from mysqltest1.v4 limit 1;
|
||||
default(n) default(u) default(cu) default(cr) default(d)
|
||||
NULL root@localhost foo@localhost NULL test
|
||||
select * from v5 limit 1;
|
||||
default(n) default(u) default(cu) default(cr) default(d)
|
||||
NULL root@localhost @ bar test
|
||||
select * from v6 limit 1;
|
||||
default(n) default(u) default(cu) default(cr) default(d)
|
||||
NULL root@localhost @ bar test
|
||||
connect conn,localhost,conn,,mysqltest1;
|
||||
set role bar;
|
||||
insert test.t1 (n) values ('t1');
|
||||
insert v1 (n) values ('v1');
|
||||
insert test.v2 (n) values ('v2');
|
||||
insert test.v3 (n) values ('v3');
|
||||
select default(n),default(u),default(cu),default(cr), default(d) from test.t1 limit 1;
|
||||
default(n) default(u) default(cu) default(cr) default(d)
|
||||
NULL conn@localhost @localhost bar mysqltest1
|
||||
select * from v4 limit 1;
|
||||
default(n) default(u) default(cu) default(cr) default(d)
|
||||
NULL conn@localhost foo@localhost NULL mysqltest1
|
||||
select * from test.v5 limit 1;
|
||||
default(n) default(u) default(cu) default(cr) default(d)
|
||||
NULL conn@localhost @ bar mysqltest1
|
||||
select * from test.v6 limit 1;
|
||||
default(n) default(u) default(cu) default(cr) default(d)
|
||||
NULL conn@localhost @ bar mysqltest1
|
||||
connection default;
|
||||
disconnect conn;
|
||||
select * from t1;
|
||||
n u cu cr d
|
||||
t1 root@localhost root@localhost NULL test
|
||||
v1 root@localhost foo@localhost NULL test
|
||||
v2 root@localhost @ bar test
|
||||
v3 root@localhost @ bar test
|
||||
t1 conn@localhost @localhost bar mysqltest1
|
||||
v1 conn@localhost foo@localhost NULL mysqltest1
|
||||
v2 conn@localhost @ bar mysqltest1
|
||||
v3 conn@localhost @ bar mysqltest1
|
||||
drop database mysqltest1;
|
||||
drop view v2, v3, v5, v6;
|
||||
drop table t1;
|
||||
drop user ''@localhost;
|
||||
drop user foo@localhost;
|
||||
drop role bar;
|
||||
create table t1 (a date,
|
||||
mn varchar(100) default monthname(a),
|
||||
dn varchar(100) default dayname(a),
|
||||
df varchar(100) default date_format(a, "%a, %b"));
|
||||
insert t1 (a) values ('2010-12-2');
|
||||
set lc_time_names=de_DE;
|
||||
insert t1 (a) values ('2010-12-2');
|
||||
set lc_time_names=default;
|
||||
select * from t1;
|
||||
a mn dn df
|
||||
2010-12-02 December Thursday Thu, Dec
|
||||
2010-12-02 Dezember Donnerstag Do, Dez
|
||||
drop table t1;
|
||||
create table t1 (a varchar(100) default @@sql_mode);
|
||||
insert t1 () values ();
|
||||
set sql_mode=ansi;
|
||||
insert t1 () values ();
|
||||
set sql_mode=default;
|
||||
select * from t1;
|
||||
a
|
||||
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
||||
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
|
||||
drop table t1;
|
||||
@@ -626,13 +626,13 @@ SELECT f3 FROM t2 HAVING f3 >= 8
|
||||
);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY <derived2> system NULL NULL NULL NULL 1 100.00
|
||||
1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 4 sq.f2 1 100.00
|
||||
1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 4 const 1 100.00
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 Using where; FirstMatch(<subquery4>); Using join buffer (flat, BNL join)
|
||||
4 MATERIALIZED t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DERIVED t1 system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'sq.f2' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 select 6 AS `f1` from <materialize> (select `test`.`t2`.`f3` from `test`.`t2` having (`test`.`t2`.`f3` >= 8)) semi join (`test`.`t2`) where ((`test`.`t2`.`f3` = 6) and (9 = `<subquery4>`.`f3`))
|
||||
Note 1003 select 6 AS `f1` from <materialize> (select `test`.`t2`.`f3` from `test`.`t2` having (`test`.`t2`.`f3` >= 8)) semi join (`test`.`t2`) where ((`test`.`t2`.`f3` = 6) and (`<subquery4>`.`f3` = 9))
|
||||
DROP TABLE t2,t1;
|
||||
#
|
||||
# MDEV-9462: Out of memory using explain on 2 empty tables
|
||||
|
||||
7034
mysql-test/r/derived_cond_pushdown.result
Normal file
7034
mysql-test/r/derived_cond_pushdown.result
Normal file
File diff suppressed because it is too large
Load Diff
@@ -79,6 +79,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -93,6 +94,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 12
|
||||
@@ -166,6 +168,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -180,6 +183,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 12
|
||||
@@ -232,6 +236,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -248,6 +253,7 @@ Handler_read_key 11
|
||||
Handler_read_last 0
|
||||
Handler_read_next 3
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 11
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 36
|
||||
@@ -323,6 +329,7 @@ Handler_read_key 22
|
||||
Handler_read_last 0
|
||||
Handler_read_next 22
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 60
|
||||
@@ -340,6 +347,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -356,6 +364,7 @@ Handler_read_key 11
|
||||
Handler_read_last 0
|
||||
Handler_read_next 3
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 11
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 36
|
||||
@@ -363,9 +372,51 @@ explain extended select * from v1 join v4 on f1=f2;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 11 100.00 Using where
|
||||
1 PRIMARY <derived2> ref key0 key0 5 test.t2.f2 2 100.00
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using temporary; Using filesort
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||
Warnings:
|
||||
Note 1003 select `v1`.`f1` AS `f1`,`v1`.`f11` AS `f11`,`test`.`t2`.`f2` AS `f2`,`test`.`t2`.`f22` AS `f22` from `test`.`v1` join `test`.`t2` where ((`v1`.`f1` = `test`.`t2`.`f2`) and (`test`.`t2`.`f2` in (2,3)))
|
||||
explain format=json select * from v1 join v4 on f1=f2;
|
||||
EXPLAIN
|
||||
{
|
||||
"query_block": {
|
||||
"select_id": 1,
|
||||
"table": {
|
||||
"table_name": "t2",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "((t2.f2 in (2,3)) and (t2.f2 is not null))"
|
||||
},
|
||||
"table": {
|
||||
"table_name": "<derived2>",
|
||||
"access_type": "ref",
|
||||
"possible_keys": ["key0"],
|
||||
"key": "key0",
|
||||
"key_length": "5",
|
||||
"used_key_parts": ["f1"],
|
||||
"ref": ["test.t2.f2"],
|
||||
"rows": 2,
|
||||
"filtered": 100,
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 2,
|
||||
"filesort": {
|
||||
"sort_key": "t1.f1",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "t1",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "(t1.f1 in (2,3))"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
select * from v1 join v4 on f1=f2;
|
||||
f1 f11 f2 f22
|
||||
3 3 3 3
|
||||
@@ -389,7 +440,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY <derived3> ALL NULL NULL NULL NULL 11 100.00 Using where
|
||||
3 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||
Warnings:
|
||||
Note 1003 select `tt`.`f1` AS `f1`,`tt`.`f11` AS `f11` from (select `test`.`t1`.`f1` AS `f1`,`test`.`t1`.`f11` AS `f11` from `test`.`t1` where (`test`.`t1`.`f1` < 7) group by `test`.`t1`.`f1`) `tt` where (`tt`.`f1` > 2)
|
||||
Note 1003 select `tt`.`f1` AS `f1`,`tt`.`f11` AS `f11` from (select `test`.`t1`.`f1` AS `f1`,`test`.`t1`.`f11` AS `f11` from `test`.`t1` where ((`test`.`t1`.`f1` < 7) and (`test`.`t1`.`f1` > 2)) group by `test`.`t1`.`f1`) `tt` where (`tt`.`f1` > 2)
|
||||
select * from (select * from
|
||||
(select * from t1 where f1 < 7 group by f1) tt where f1 > 2) zz;
|
||||
f1 f11
|
||||
@@ -416,7 +467,55 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
2 DERIVED <derived3> ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||
3 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||
Warnings:
|
||||
Note 1003 select `zz`.`f1` AS `f1`,`zz`.`f11` AS `f11` from (select `tt`.`f1` AS `f1`,`tt`.`f11` AS `f11` from (select `test`.`t1`.`f1` AS `f1`,`test`.`t1`.`f11` AS `f11` from `test`.`t1` where (`test`.`t1`.`f1` < 7) group by `test`.`t1`.`f1`) `tt` where (`tt`.`f1` > 2) group by `tt`.`f1`) `zz`
|
||||
Note 1003 select `zz`.`f1` AS `f1`,`zz`.`f11` AS `f11` from (select `tt`.`f1` AS `f1`,`tt`.`f11` AS `f11` from (select `test`.`t1`.`f1` AS `f1`,`test`.`t1`.`f11` AS `f11` from `test`.`t1` where ((`test`.`t1`.`f1` < 7) and (`test`.`t1`.`f1` > 2)) group by `test`.`t1`.`f1`) `tt` where (`tt`.`f1` > 2) group by `tt`.`f1`) `zz`
|
||||
explain format=json select * from (select * from
|
||||
(select * from t1 where f1 < 7 group by f1) tt where f1 > 2 group by f1) zz;
|
||||
EXPLAIN
|
||||
{
|
||||
"query_block": {
|
||||
"select_id": 1,
|
||||
"table": {
|
||||
"table_name": "<derived2>",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 2,
|
||||
"filesort": {
|
||||
"sort_key": "tt.f1",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "<derived3>",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "(tt.f1 > 2)",
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 3,
|
||||
"filesort": {
|
||||
"sort_key": "t1.f1",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "t1",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "((t1.f1 < 7) and (t1.f1 > 2))"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
select * from (select * from
|
||||
(select * from t1 where f1 < 7 group by f1) tt where f1 > 2 group by f1) zz;
|
||||
f1 f11
|
||||
@@ -434,7 +533,70 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
5 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||
3 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||
Warnings:
|
||||
Note 1003 select `tt`.`f1` AS `f1`,`tt`.`f11` AS `f11`,`tt`.`f1` AS `f1`,`tt`.`f11` AS `f11` from (select `test`.`t1`.`f1` AS `f1`,`test`.`t1`.`f11` AS `f11` from `test`.`t1` where (`test`.`t1`.`f1` < 7) group by `test`.`t1`.`f1`) `tt` join (select `t1`.`f1` AS `f1`,`t1`.`f11` AS `f11` from `test`.`t1` where (`t1`.`f1` < 7) group by `t1`.`f1`) `tt` where ((`tt`.`f1` = `tt`.`f1`) and (`tt`.`f1` > 2) and (`tt`.`f1` > 2))
|
||||
Note 1003 select `tt`.`f1` AS `f1`,`tt`.`f11` AS `f11`,`tt`.`f1` AS `f1`,`tt`.`f11` AS `f11` from (select `test`.`t1`.`f1` AS `f1`,`test`.`t1`.`f11` AS `f11` from `test`.`t1` where ((`test`.`t1`.`f1` < 7) and (`test`.`t1`.`f1` > 2) and (`test`.`t1`.`f1` > 2)) group by `test`.`t1`.`f1`) `tt` join (select `t1`.`f1` AS `f1`,`t1`.`f11` AS `f11` from `test`.`t1` where ((`t1`.`f1` < 7) and (`t1`.`f1` > 2) and (`t1`.`f1` > 2)) group by `t1`.`f1`) `tt` where ((`tt`.`f1` = `tt`.`f1`) and (`tt`.`f1` > 2) and (`tt`.`f1` > 2))
|
||||
explain format=json select * from
|
||||
(select * from (select * from t1 where f1 < 7 group by f1) tt where f1 > 2) x
|
||||
join
|
||||
(select * from (select * from t1 where f1 < 7 group by f1) tt where f1 > 2) z
|
||||
on x.f1 = z.f1;
|
||||
EXPLAIN
|
||||
{
|
||||
"query_block": {
|
||||
"select_id": 1,
|
||||
"table": {
|
||||
"table_name": "<derived3>",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "((tt.f1 > 2) and (tt.f1 > 2) and (tt.f1 is not null))",
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 3,
|
||||
"filesort": {
|
||||
"sort_key": "t1.f1",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "t1",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "((t1.f1 < 7) and (t1.f1 > 2) and (t1.f1 > 2))"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"table_name": "<derived5>",
|
||||
"access_type": "ref",
|
||||
"possible_keys": ["key0"],
|
||||
"key": "key0",
|
||||
"key_length": "5",
|
||||
"used_key_parts": ["f1"],
|
||||
"ref": ["tt.f1"],
|
||||
"rows": 2,
|
||||
"filtered": 100,
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 5,
|
||||
"filesort": {
|
||||
"sort_key": "t1.f1",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "t1",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "((t1.f1 < 7) and (t1.f1 > 2) and (t1.f1 > 2))"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
flush status;
|
||||
select * from
|
||||
(select * from (select * from t1 where f1 < 7 group by f1) tt where f1 > 2) x
|
||||
@@ -451,9 +613,10 @@ Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 2
|
||||
Handler_read_prev 0
|
||||
Handler_read_rnd 8
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 4
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 39
|
||||
Handler_read_rnd_next 33
|
||||
flush status;
|
||||
merged in merged derived join merged in merged derived
|
||||
explain extended select * from
|
||||
@@ -495,7 +658,106 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
2 DERIVED <derived3> ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||
3 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||
Warnings:
|
||||
Note 1003 select `x`.`f1` AS `f1`,`x`.`f11` AS `f11`,`z`.`f1` AS `f1`,`z`.`f11` AS `f11` from (select `tt`.`f1` AS `f1`,`tt`.`f11` AS `f11` from (select `test`.`t1`.`f1` AS `f1`,`test`.`t1`.`f11` AS `f11` from `test`.`t1` where (`test`.`t1`.`f1` < 7) group by `test`.`t1`.`f1`) `tt` where (`tt`.`f1` > 2) group by `tt`.`f1`) `x` join (select `tt`.`f1` AS `f1`,`tt`.`f11` AS `f11` from (select `t1`.`f1` AS `f1`,`t1`.`f11` AS `f11` from `test`.`t1` where (`t1`.`f1` < 7) group by `t1`.`f1`) `tt` where (`tt`.`f1` > 2) group by `tt`.`f1`) `z` where (`z`.`f1` = `x`.`f1`)
|
||||
Note 1003 select `x`.`f1` AS `f1`,`x`.`f11` AS `f11`,`z`.`f1` AS `f1`,`z`.`f11` AS `f11` from (select `tt`.`f1` AS `f1`,`tt`.`f11` AS `f11` from (select `test`.`t1`.`f1` AS `f1`,`test`.`t1`.`f11` AS `f11` from `test`.`t1` where ((`test`.`t1`.`f1` < 7) and (`test`.`t1`.`f1` > 2)) group by `test`.`t1`.`f1`) `tt` where (`tt`.`f1` > 2) group by `tt`.`f1`) `x` join (select `tt`.`f1` AS `f1`,`tt`.`f11` AS `f11` from (select `t1`.`f1` AS `f1`,`t1`.`f11` AS `f11` from `test`.`t1` where ((`t1`.`f1` < 7) and (`t1`.`f1` > 2)) group by `t1`.`f1`) `tt` where (`tt`.`f1` > 2) group by `tt`.`f1`) `z` where (`z`.`f1` = `x`.`f1`)
|
||||
explain format=json select * from
|
||||
(select * from
|
||||
(select * from t1 where f1 < 7 group by f1) tt where f1 > 2 group by f1) x
|
||||
join
|
||||
(select * from
|
||||
(select * from t1 where f1 < 7 group by f1) tt where f1 > 2 group by f1) z
|
||||
on x.f1 = z.f1;
|
||||
EXPLAIN
|
||||
{
|
||||
"query_block": {
|
||||
"select_id": 1,
|
||||
"table": {
|
||||
"table_name": "<derived2>",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "(x.f1 is not null)",
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 2,
|
||||
"filesort": {
|
||||
"sort_key": "tt.f1",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "<derived3>",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "(tt.f1 > 2)",
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 3,
|
||||
"filesort": {
|
||||
"sort_key": "t1.f1",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "t1",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "((t1.f1 < 7) and (t1.f1 > 2))"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"table_name": "<derived4>",
|
||||
"access_type": "ref",
|
||||
"possible_keys": ["key0"],
|
||||
"key": "key0",
|
||||
"key_length": "5",
|
||||
"used_key_parts": ["f1"],
|
||||
"ref": ["x.f1"],
|
||||
"rows": 2,
|
||||
"filtered": 100,
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 4,
|
||||
"filesort": {
|
||||
"sort_key": "tt.f1",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "<derived5>",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "(tt.f1 > 2)",
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 5,
|
||||
"filesort": {
|
||||
"sort_key": "t1.f1",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "t1",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "((t1.f1 < 7) and (t1.f1 > 2))"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
select * from
|
||||
(select * from
|
||||
(select * from t1 where f1 < 7 group by f1) tt where f1 > 2 group by f1) x
|
||||
@@ -523,9 +785,41 @@ explain extended
|
||||
select * from ( select * from v1 where f1 < 7) tt;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY <derived3> ALL NULL NULL NULL NULL 11 100.00 Using where
|
||||
3 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using temporary; Using filesort
|
||||
3 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||
Warnings:
|
||||
Note 1003 select `v1`.`f1` AS `f1`,`v1`.`f11` AS `f11` from `test`.`v1` where (`v1`.`f1` < 7)
|
||||
explain format=json
|
||||
select * from ( select * from v1 where f1 < 7) tt;
|
||||
EXPLAIN
|
||||
{
|
||||
"query_block": {
|
||||
"select_id": 1,
|
||||
"table": {
|
||||
"table_name": "<derived3>",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "(v1.f1 < 7)",
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 3,
|
||||
"filesort": {
|
||||
"sort_key": "t1.f1",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "t1",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "(t1.f1 < 7)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
select * from ( select * from v1 where f1 < 7) tt;
|
||||
f1 f11
|
||||
1 1
|
||||
@@ -570,9 +864,51 @@ explain extended select * from v6 join v7 on f2=f1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 11 100.00 Using where
|
||||
1 PRIMARY <derived5> ref key0 key0 5 test.t2.f2 2 100.00
|
||||
5 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using temporary; Using filesort
|
||||
5 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`f2` AS `f2`,`test`.`t2`.`f22` AS `f22`,`v1`.`f1` AS `f1`,`v1`.`f11` AS `f11` from `test`.`t2` join `test`.`v1` where ((`v1`.`f1` = `test`.`t2`.`f2`) and (`test`.`t2`.`f2` < 7) and (`test`.`t2`.`f2` in (2,3)))
|
||||
explain format=json select * from v6 join v7 on f2=f1;
|
||||
EXPLAIN
|
||||
{
|
||||
"query_block": {
|
||||
"select_id": 1,
|
||||
"table": {
|
||||
"table_name": "t2",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "((t2.f2 < 7) and (t2.f2 in (2,3)) and (t2.f2 is not null))"
|
||||
},
|
||||
"table": {
|
||||
"table_name": "<derived5>",
|
||||
"access_type": "ref",
|
||||
"possible_keys": ["key0"],
|
||||
"key": "key0",
|
||||
"key_length": "5",
|
||||
"used_key_parts": ["f1"],
|
||||
"ref": ["test.t2.f2"],
|
||||
"rows": 2,
|
||||
"filtered": 100,
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 5,
|
||||
"filesort": {
|
||||
"sort_key": "t1.f1",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "t1",
|
||||
"access_type": "ALL",
|
||||
"rows": 11,
|
||||
"filtered": 100,
|
||||
"attached_condition": "(t1.f1 in (2,3))"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
select * from v6 join v7 on f2=f1;
|
||||
f2 f22 f1 f11
|
||||
3 3 3 3
|
||||
@@ -2354,7 +2690,7 @@ ON p.id = g.p_random
|
||||
ORDER BY gallery_name ASC
|
||||
;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2 Using filesort
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 10 Using filesort
|
||||
1 PRIMARY p eq_ref PRIMARY PRIMARY 4 g.p_random 1 Using where
|
||||
2 DERIVED gal ALL NULL NULL NULL NULL 10
|
||||
3 DEPENDENT SUBQUERY pi ref gallery_id gallery_id 4 test.gal.id 4 Using temporary; Using filesort
|
||||
|
||||
@@ -918,7 +918,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 96 100.00 Using where; Using temporary
|
||||
1 PRIMARY <derived2> ref key0 key0 5 test.t1.i1 9 100.00 Using where
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 96 100.00
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 96 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select straight_join distinct `test`.`t1`.`id` AS `id` from `test`.`t1` join `test`.`v1` join `test`.`t2` where ((`test`.`t2`.`i` = `v1`.`id`) and (`v1`.`i1` = `test`.`t1`.`i1`) and (`v1`.`id` <> 3))
|
||||
set join_buffer_size=1024;
|
||||
|
||||
@@ -7,4 +7,12 @@ select * from t1;
|
||||
nr b str
|
||||
select * from t1 limit 0;
|
||||
nr b str
|
||||
show status like "Empty_queries";
|
||||
Variable_name Value
|
||||
Empty_queries 2
|
||||
drop table t1;
|
||||
select * from t2;
|
||||
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||
show status like "Empty_queries";
|
||||
Variable_name Value
|
||||
Empty_queries 2
|
||||
|
||||
@@ -485,6 +485,7 @@ EXPLAIN
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 2,
|
||||
"having_condition": "(cnt > 0)",
|
||||
"filesort": {
|
||||
"sort_key": "t1.a",
|
||||
"temporary_table": {
|
||||
|
||||
@@ -3,6 +3,7 @@ set sql_mode="";
|
||||
flush status;
|
||||
show status like "feature%";
|
||||
Variable_name Value
|
||||
Feature_check_constraint 0
|
||||
Feature_delay_key_write 0
|
||||
Feature_dynamic_columns 0
|
||||
Feature_fulltext 0
|
||||
@@ -158,3 +159,9 @@ drop table t1;
|
||||
show status like "feature_delay_key_write";
|
||||
Variable_name Value
|
||||
Feature_delay_key_write 2
|
||||
create table t1 (a int check (a > 5));
|
||||
create table t2 (b int, constraint foo check (b < 10));
|
||||
drop table t1, t2;
|
||||
show status like "feature_check_constraint";
|
||||
Variable_name Value
|
||||
Feature_check_constraint 2
|
||||
|
||||
@@ -29,6 +29,6 @@ insert t1 () values ();
|
||||
insert t1 (a) values (10);
|
||||
select default(a),default(b),default(c),default(d),default(e),default(f) from t1;
|
||||
default(a) default(b) default(c) default(d) default(e) default(f)
|
||||
1 2 foo bar 2001-01-01 10:20:30 2001-01-01 10:20:30.123456
|
||||
1 11 foo bar 2001-01-01 10:20:30 2001-01-01 10:20:30.123456
|
||||
1 2 foo bar 2001-01-01 10:20:30 2001-01-01 10:20:30.120000
|
||||
1 11 foo bar 2001-01-01 10:20:30 2001-01-01 10:20:30.120000
|
||||
drop table t1;
|
||||
|
||||
@@ -2278,6 +2278,45 @@ EXECUTE stmt;
|
||||
t2_id GROUP_CONCAT(IF (t6.b, t6.f, t5.f) ORDER BY 1)
|
||||
DROP TABLE t1,t2,t3,t4,t5,t6;
|
||||
#
|
||||
# MDEV-10500 CASE/IF Statement returns multiple values and shifts further result values to the next column
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
id int not null AUTO_INCREMENT,
|
||||
active bool not null,
|
||||
data1 bigint,
|
||||
data2 bigint,
|
||||
data3 bigint,
|
||||
primary key (id)
|
||||
);
|
||||
INSERT INTO t1 (active,data1,data2,data3) VALUES (1,null,100,200);
|
||||
SELECT
|
||||
CASE WHEN active THEN SUM(data1) END AS C_1,
|
||||
SUM(data2) AS C_2,
|
||||
SUM(data3) AS C_3
|
||||
FROM t1;
|
||||
C_1 C_2 C_3
|
||||
NULL 100 200
|
||||
SELECT
|
||||
IF(active, SUM(data1), 5) AS C_1,
|
||||
SUM(data2) AS C_2,
|
||||
SUM(data3) AS C_3
|
||||
FROM t1;
|
||||
C_1 C_2 C_3
|
||||
NULL 100 200
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-10468 Assertion `nr >= 0.0' failed in Item_sum_std::val_real()
|
||||
#
|
||||
SELECT STDDEV_POP(f) FROM (SELECT "1e+309" AS f UNION SELECT "-1e+309" AS f) tbl;
|
||||
STDDEV_POP(f)
|
||||
1.7976931348623157e308
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '1e+309'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '-1e+309'
|
||||
SELECT STDDEV(f) FROM (SELECT 1.7976931348623157e+308 AS f UNION SELECT -1.7976931348623157e+308 AS f) tbl;
|
||||
STDDEV(f)
|
||||
1.7976931348623157e308
|
||||
#
|
||||
# MDEV-8852 Implicit or explicit CAST from MAX(string) to INT,DOUBLE,DECIMAL does not produce warnings
|
||||
#
|
||||
SELECT MAX('x') << 1, CAST(MAX('x') AS DOUBLE), CAST(MAX('x') AS DECIMAL);
|
||||
@@ -2344,5 +2383,58 @@ companynr AVG(fld1) avg1 avg2
|
||||
37 9223372036854775805.0000 9223372036854775805 9223372036854775805
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# case where aggregate resolved in the local SELECT
|
||||
# but outer ones are checked
|
||||
#
|
||||
create table t10 (a int , b int, c int);
|
||||
insert into t10 values (0,0,0),(1,1,1);
|
||||
create table t11 as select * from t10;
|
||||
create table t12 as select * from t10;
|
||||
explain extended select a from t10 where c<3 or a in (select c from t12 union select max(t10.b) from t11 group by t11.c);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t10 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t12 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
3 DEPENDENT UNION t11 ALL NULL NULL NULL NULL 2 100.00 Using temporary
|
||||
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t10.b' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 select `test`.`t10`.`a` AS `a` from `test`.`t10` where ((`test`.`t10`.`c` < 3) or <expr_cache><`test`.`t10`.`a`,`test`.`t10`.`b`>(<in_optimizer>(`test`.`t10`.`a`,<exists>(select `test`.`t12`.`c` from `test`.`t12` where (<cache>(`test`.`t10`.`a`) = `test`.`t12`.`c`) union select max(`test`.`t10`.`b`) from `test`.`t11` group by `test`.`t11`.`c` having (<cache>(`test`.`t10`.`a`) = <ref_null_helper>(max(`test`.`t10`.`b`)))))))
|
||||
drop table t10,t11,t12;
|
||||
#
|
||||
# MDEV-10017: Get unexpected `Empty Set` for correlated subquery
|
||||
# with aggregate functions
|
||||
#
|
||||
create table t1(c1 int, c2 int, c3 int);
|
||||
insert into t1 values(1,1,1),(2,2,2),(3,3,3);
|
||||
select * from t1;
|
||||
c1 c2 c3
|
||||
1 1 1
|
||||
2 2 2
|
||||
3 3 3
|
||||
create table t2(c1 int, c2 int);
|
||||
insert into t2 values(2,2);
|
||||
select * from t2;
|
||||
c1 c2
|
||||
2 2
|
||||
explain extended
|
||||
select c1 from t1 having c1 >= (select t.c1 as c from t2 t order by (select min(t1.c1+c) from t2 tt));
|
||||
ERROR HY000: Invalid use of group function
|
||||
select c1 from t1 having c1 >= (select t.c1 as c from t2 t order by (select min(t1.c1+c) from t2 tt));
|
||||
ERROR HY000: Invalid use of group function
|
||||
explain extended
|
||||
select c1 from t1 having c1 >= (select t.c1 as c from t2 t order by (select min(t1.c1+tt.c1) from t2 tt));
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DEPENDENT SUBQUERY t system NULL NULL NULL NULL 1 100.00
|
||||
3 DEPENDENT SUBQUERY tt system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.c1' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` having (`test`.`t1`.`c1` >= <expr_cache><`test`.`t1`.`c1`>((select 2 AS `c` from dual order by (select min((`test`.`t1`.`c1` + 2)) from dual))))
|
||||
select c1 from t1 having c1 >= (select t.c1 as c from t2 t order by (select min(t1.c1+tt.c1) from t2 tt));
|
||||
c1
|
||||
2
|
||||
3
|
||||
drop table t1,t2;
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
|
||||
@@ -787,12 +787,18 @@ select 5.9 div 2, 1.23456789e3 DIV 2, 1.23456789e9 DIV 2, 1.23456789e19 DIV 2;
|
||||
5.9 div 2 1.23456789e3 DIV 2 1.23456789e9 DIV 2 1.23456789e19 DIV 2
|
||||
2 617 617283945 6172839450000000000
|
||||
#
|
||||
# MDEV-10467 Assertion `nr >= 0.0' failed in Item_sum_std::val_real()
|
||||
#
|
||||
CREATE TABLE t1 (i INT);
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
SELECT STDDEV_SAMP(ROUND('0', 309)) FROM t1;
|
||||
STDDEV_SAMP(ROUND('0', 309))
|
||||
0
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.0 tests
|
||||
#
|
||||
#
|
||||
# MDEV-5781 Item_sum_std::val_real(): Assertion `nr >= 0.0' fails on query with STDDEV_POP, ROUND and variable
|
||||
#
|
||||
SELECT STDDEV_POP(ROUND(0,@A:=2009)) FROM (SELECT 1 UNION SELECT 2) fake_table;
|
||||
@@ -805,3 +811,9 @@ STDDEV_POP(ROUND(0,@A:=2009))
|
||||
select 0=0, 0=-0, 0.0= -0.0, 0.0 = -(0.0), 0.0E1=-0.0E1, 0.0E1=-(0.0E1);
|
||||
0=0 0=-0 0.0= -0.0 0.0 = -(0.0) 0.0E1=-0.0E1 0.0E1=-(0.0E1)
|
||||
1 1 1 1 1 1
|
||||
#
|
||||
# CRC32 tests
|
||||
#
|
||||
select CRC32(NULL), CRC32(''), CRC32('MySQL'), CRC32('mysql'), CRC32('01234567'), CRC32('012345678');
|
||||
CRC32(NULL) CRC32('') CRC32('MySQL') CRC32('mysql') CRC32('01234567') CRC32('012345678')
|
||||
NULL 0 3259397556 2501908538 763378421 939184570
|
||||
|
||||
@@ -577,6 +577,13 @@ AND 57813X540X1723 = 'Test';
|
||||
N AVG
|
||||
0 NULL
|
||||
drop table t1;
|
||||
SELECT NAME_CONST('a', -(1 OR 2)) OR 1;
|
||||
ERROR HY000: Incorrect arguments to NAME_CONST
|
||||
SELECT NAME_CONST('a', -(1 AND 2)) OR 1;
|
||||
ERROR HY000: Incorrect arguments to NAME_CONST
|
||||
SELECT NAME_CONST('a', -(1)) OR 1;
|
||||
NAME_CONST('a', -(1)) OR 1
|
||||
1
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
|
||||
@@ -2806,3 +2806,332 @@ Warning 1292 Truncated incorrect time value: '-1441:00:00'
|
||||
#
|
||||
# End of 10.0 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.1 tests
|
||||
#
|
||||
#
|
||||
# MDEV-10317 EXCTACT(MINUTE_MICROSECOND) truncates data
|
||||
#
|
||||
CREATE TABLE t1 (a DATETIME(6));
|
||||
INSERT INTO t1 VALUES ('1999-12-31 23:59:59.999999');
|
||||
SELECT
|
||||
a,
|
||||
EXTRACT(YEAR FROM a),
|
||||
EXTRACT(YEAR_MONTH FROM a),
|
||||
EXTRACT(QUARTER FROM a),
|
||||
EXTRACT(MONTH FROM a),
|
||||
EXTRACT(WEEK FROM a),
|
||||
EXTRACT(DAY FROM a),
|
||||
EXTRACT(DAY_HOUR FROM a),
|
||||
EXTRACT(DAY_MINUTE FROM a),
|
||||
EXTRACT(DAY_SECOND FROM a),
|
||||
EXTRACT(HOUR FROM a),
|
||||
EXTRACT(HOUR_MINUTE FROM a),
|
||||
EXTRACT(HOUR_SECOND FROM a),
|
||||
EXTRACT(MINUTE FROM a),
|
||||
EXTRACT(MINUTE_SECOND FROM a),
|
||||
EXTRACT(SECOND FROM a),
|
||||
EXTRACT(MICROSECOND FROM a),
|
||||
EXTRACT(DAY_MICROSECOND FROM a),
|
||||
EXTRACT(HOUR_MICROSECOND FROM a),
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a),
|
||||
EXTRACT(SECOND_MICROSECOND FROM a)
|
||||
FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 t1 a a 12 26 26 Y 128 6 63
|
||||
def EXTRACT(YEAR FROM a) 3 4 4 Y 32896 0 63
|
||||
def EXTRACT(YEAR_MONTH FROM a) 3 6 6 Y 32896 0 63
|
||||
def EXTRACT(QUARTER FROM a) 3 2 1 Y 32896 0 63
|
||||
def EXTRACT(MONTH FROM a) 3 2 2 Y 32896 0 63
|
||||
def EXTRACT(WEEK FROM a) 3 2 2 Y 32896 0 63
|
||||
def EXTRACT(DAY FROM a) 3 2 2 Y 32896 0 63
|
||||
def EXTRACT(DAY_HOUR FROM a) 3 5 4 Y 32896 0 63
|
||||
def EXTRACT(DAY_MINUTE FROM a) 3 7 6 Y 32896 0 63
|
||||
def EXTRACT(DAY_SECOND FROM a) 3 9 8 Y 32896 0 63
|
||||
def EXTRACT(HOUR FROM a) 3 3 2 Y 32896 0 63
|
||||
def EXTRACT(HOUR_MINUTE FROM a) 3 5 4 Y 32896 0 63
|
||||
def EXTRACT(HOUR_SECOND FROM a) 3 7 6 Y 32896 0 63
|
||||
def EXTRACT(MINUTE FROM a) 3 3 2 Y 32896 0 63
|
||||
def EXTRACT(MINUTE_SECOND FROM a) 3 5 4 Y 32896 0 63
|
||||
def EXTRACT(SECOND FROM a) 3 3 2 Y 32896 0 63
|
||||
def EXTRACT(MICROSECOND FROM a) 3 7 6 Y 32896 0 63
|
||||
def EXTRACT(DAY_MICROSECOND FROM a) 8 15 14 Y 32896 0 63
|
||||
def EXTRACT(HOUR_MICROSECOND FROM a) 8 13 12 Y 32896 0 63
|
||||
def EXTRACT(MINUTE_MICROSECOND FROM a) 8 11 10 Y 32896 0 63
|
||||
def EXTRACT(SECOND_MICROSECOND FROM a) 3 9 8 Y 32896 0 63
|
||||
a 1999-12-31 23:59:59.999999
|
||||
EXTRACT(YEAR FROM a) 1999
|
||||
EXTRACT(YEAR_MONTH FROM a) 199912
|
||||
EXTRACT(QUARTER FROM a) 4
|
||||
EXTRACT(MONTH FROM a) 12
|
||||
EXTRACT(WEEK FROM a) 52
|
||||
EXTRACT(DAY FROM a) 31
|
||||
EXTRACT(DAY_HOUR FROM a) 3123
|
||||
EXTRACT(DAY_MINUTE FROM a) 312359
|
||||
EXTRACT(DAY_SECOND FROM a) 31235959
|
||||
EXTRACT(HOUR FROM a) 23
|
||||
EXTRACT(HOUR_MINUTE FROM a) 2359
|
||||
EXTRACT(HOUR_SECOND FROM a) 235959
|
||||
EXTRACT(MINUTE FROM a) 59
|
||||
EXTRACT(MINUTE_SECOND FROM a) 5959
|
||||
EXTRACT(SECOND FROM a) 59
|
||||
EXTRACT(MICROSECOND FROM a) 999999
|
||||
EXTRACT(DAY_MICROSECOND FROM a) 31235959999999
|
||||
EXTRACT(HOUR_MICROSECOND FROM a) 235959999999
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a) 5959999999
|
||||
EXTRACT(SECOND_MICROSECOND FROM a) 59999999
|
||||
CREATE TABLE t2 AS SELECT
|
||||
a,
|
||||
EXTRACT(YEAR FROM a),
|
||||
EXTRACT(YEAR_MONTH FROM a),
|
||||
EXTRACT(QUARTER FROM a),
|
||||
EXTRACT(MONTH FROM a),
|
||||
EXTRACT(WEEK FROM a),
|
||||
EXTRACT(DAY FROM a),
|
||||
EXTRACT(DAY_HOUR FROM a),
|
||||
EXTRACT(DAY_MINUTE FROM a),
|
||||
EXTRACT(DAY_SECOND FROM a),
|
||||
EXTRACT(HOUR FROM a),
|
||||
EXTRACT(HOUR_MINUTE FROM a),
|
||||
EXTRACT(HOUR_SECOND FROM a),
|
||||
EXTRACT(MINUTE FROM a),
|
||||
EXTRACT(MINUTE_SECOND FROM a),
|
||||
EXTRACT(SECOND FROM a),
|
||||
EXTRACT(MICROSECOND FROM a),
|
||||
EXTRACT(DAY_MICROSECOND FROM a),
|
||||
EXTRACT(HOUR_MICROSECOND FROM a),
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a),
|
||||
EXTRACT(SECOND_MICROSECOND FROM a)
|
||||
FROM t1;
|
||||
SELECT * FROM t2;
|
||||
a 1999-12-31 23:59:59.999999
|
||||
EXTRACT(YEAR FROM a) 1999
|
||||
EXTRACT(YEAR_MONTH FROM a) 199912
|
||||
EXTRACT(QUARTER FROM a) 4
|
||||
EXTRACT(MONTH FROM a) 12
|
||||
EXTRACT(WEEK FROM a) 52
|
||||
EXTRACT(DAY FROM a) 31
|
||||
EXTRACT(DAY_HOUR FROM a) 3123
|
||||
EXTRACT(DAY_MINUTE FROM a) 312359
|
||||
EXTRACT(DAY_SECOND FROM a) 31235959
|
||||
EXTRACT(HOUR FROM a) 23
|
||||
EXTRACT(HOUR_MINUTE FROM a) 2359
|
||||
EXTRACT(HOUR_SECOND FROM a) 235959
|
||||
EXTRACT(MINUTE FROM a) 59
|
||||
EXTRACT(MINUTE_SECOND FROM a) 5959
|
||||
EXTRACT(SECOND FROM a) 59
|
||||
EXTRACT(MICROSECOND FROM a) 999999
|
||||
EXTRACT(DAY_MICROSECOND FROM a) 31235959999999
|
||||
EXTRACT(HOUR_MICROSECOND FROM a) 235959999999
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a) 5959999999
|
||||
EXTRACT(SECOND_MICROSECOND FROM a) 59999999
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` datetime(6) DEFAULT NULL,
|
||||
`EXTRACT(YEAR FROM a)` int(4) DEFAULT NULL,
|
||||
`EXTRACT(YEAR_MONTH FROM a)` int(6) DEFAULT NULL,
|
||||
`EXTRACT(QUARTER FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(MONTH FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(WEEK FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(DAY FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(DAY_HOUR FROM a)` int(5) DEFAULT NULL,
|
||||
`EXTRACT(DAY_MINUTE FROM a)` int(7) DEFAULT NULL,
|
||||
`EXTRACT(DAY_SECOND FROM a)` int(9) DEFAULT NULL,
|
||||
`EXTRACT(HOUR FROM a)` int(3) DEFAULT NULL,
|
||||
`EXTRACT(HOUR_MINUTE FROM a)` int(5) DEFAULT NULL,
|
||||
`EXTRACT(HOUR_SECOND FROM a)` int(7) DEFAULT NULL,
|
||||
`EXTRACT(MINUTE FROM a)` int(3) DEFAULT NULL,
|
||||
`EXTRACT(MINUTE_SECOND FROM a)` int(5) DEFAULT NULL,
|
||||
`EXTRACT(SECOND FROM a)` int(3) DEFAULT NULL,
|
||||
`EXTRACT(MICROSECOND FROM a)` int(7) DEFAULT NULL,
|
||||
`EXTRACT(DAY_MICROSECOND FROM a)` bigint(15) DEFAULT NULL,
|
||||
`EXTRACT(HOUR_MICROSECOND FROM a)` bigint(13) DEFAULT NULL,
|
||||
`EXTRACT(MINUTE_MICROSECOND FROM a)` bigint(11) DEFAULT NULL,
|
||||
`EXTRACT(SECOND_MICROSECOND FROM a)` int(9) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a TIME(6));
|
||||
INSERT INTO t1 VALUES ('-838:59:59.999999'),('838:59:59.999999');
|
||||
SELECT
|
||||
a,
|
||||
EXTRACT(YEAR FROM a),
|
||||
EXTRACT(YEAR_MONTH FROM a),
|
||||
EXTRACT(QUARTER FROM a),
|
||||
EXTRACT(MONTH FROM a),
|
||||
EXTRACT(WEEK FROM a),
|
||||
EXTRACT(DAY FROM a),
|
||||
EXTRACT(DAY_HOUR FROM a),
|
||||
EXTRACT(DAY_MINUTE FROM a),
|
||||
EXTRACT(DAY_SECOND FROM a),
|
||||
EXTRACT(HOUR FROM a),
|
||||
EXTRACT(HOUR_MINUTE FROM a),
|
||||
EXTRACT(HOUR_SECOND FROM a),
|
||||
EXTRACT(MINUTE FROM a),
|
||||
EXTRACT(MINUTE_SECOND FROM a),
|
||||
EXTRACT(SECOND FROM a),
|
||||
EXTRACT(MICROSECOND FROM a),
|
||||
EXTRACT(DAY_MICROSECOND FROM a),
|
||||
EXTRACT(HOUR_MICROSECOND FROM a),
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a),
|
||||
EXTRACT(SECOND_MICROSECOND FROM a)
|
||||
FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 t1 a a 11 17 17 Y 128 6 63
|
||||
def EXTRACT(YEAR FROM a) 3 4 1 Y 32896 0 63
|
||||
def EXTRACT(YEAR_MONTH FROM a) 3 6 1 Y 32896 0 63
|
||||
def EXTRACT(QUARTER FROM a) 3 2 1 Y 32896 0 63
|
||||
def EXTRACT(MONTH FROM a) 3 2 1 Y 32896 0 63
|
||||
def EXTRACT(WEEK FROM a) 3 2 9 Y 32896 0 63
|
||||
def EXTRACT(DAY FROM a) 3 2 2 Y 32896 0 63
|
||||
def EXTRACT(DAY_HOUR FROM a) 3 5 5 Y 32896 0 63
|
||||
def EXTRACT(DAY_MINUTE FROM a) 3 7 7 Y 32896 0 63
|
||||
def EXTRACT(DAY_SECOND FROM a) 3 9 9 Y 32896 0 63
|
||||
def EXTRACT(HOUR FROM a) 3 3 3 Y 32896 0 63
|
||||
def EXTRACT(HOUR_MINUTE FROM a) 3 5 5 Y 32896 0 63
|
||||
def EXTRACT(HOUR_SECOND FROM a) 3 7 7 Y 32896 0 63
|
||||
def EXTRACT(MINUTE FROM a) 3 3 3 Y 32896 0 63
|
||||
def EXTRACT(MINUTE_SECOND FROM a) 3 5 5 Y 32896 0 63
|
||||
def EXTRACT(SECOND FROM a) 3 3 3 Y 32896 0 63
|
||||
def EXTRACT(MICROSECOND FROM a) 3 7 7 Y 32896 0 63
|
||||
def EXTRACT(DAY_MICROSECOND FROM a) 8 15 15 Y 32896 0 63
|
||||
def EXTRACT(HOUR_MICROSECOND FROM a) 8 13 13 Y 32896 0 63
|
||||
def EXTRACT(MINUTE_MICROSECOND FROM a) 8 11 11 Y 32896 0 63
|
||||
def EXTRACT(SECOND_MICROSECOND FROM a) 3 9 9 Y 32896 0 63
|
||||
a -838:59:59.999999
|
||||
EXTRACT(YEAR FROM a) 0
|
||||
EXTRACT(YEAR_MONTH FROM a) 0
|
||||
EXTRACT(QUARTER FROM a) 0
|
||||
EXTRACT(MONTH FROM a) 0
|
||||
EXTRACT(WEEK FROM a) 613566757
|
||||
EXTRACT(DAY FROM a) 34
|
||||
EXTRACT(DAY_HOUR FROM a) -3422
|
||||
EXTRACT(DAY_MINUTE FROM a) -342259
|
||||
EXTRACT(DAY_SECOND FROM a) -34225959
|
||||
EXTRACT(HOUR FROM a) -22
|
||||
EXTRACT(HOUR_MINUTE FROM a) -2259
|
||||
EXTRACT(HOUR_SECOND FROM a) -225959
|
||||
EXTRACT(MINUTE FROM a) -59
|
||||
EXTRACT(MINUTE_SECOND FROM a) -5959
|
||||
EXTRACT(SECOND FROM a) -59
|
||||
EXTRACT(MICROSECOND FROM a) -999999
|
||||
EXTRACT(DAY_MICROSECOND FROM a) -34225959999999
|
||||
EXTRACT(HOUR_MICROSECOND FROM a) -225959999999
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a) -5959999999
|
||||
EXTRACT(SECOND_MICROSECOND FROM a) -59999999
|
||||
a 838:59:59.999999
|
||||
EXTRACT(YEAR FROM a) 0
|
||||
EXTRACT(YEAR_MONTH FROM a) 0
|
||||
EXTRACT(QUARTER FROM a) 0
|
||||
EXTRACT(MONTH FROM a) 0
|
||||
EXTRACT(WEEK FROM a) 613566757
|
||||
EXTRACT(DAY FROM a) 34
|
||||
EXTRACT(DAY_HOUR FROM a) 3422
|
||||
EXTRACT(DAY_MINUTE FROM a) 342259
|
||||
EXTRACT(DAY_SECOND FROM a) 34225959
|
||||
EXTRACT(HOUR FROM a) 22
|
||||
EXTRACT(HOUR_MINUTE FROM a) 2259
|
||||
EXTRACT(HOUR_SECOND FROM a) 225959
|
||||
EXTRACT(MINUTE FROM a) 59
|
||||
EXTRACT(MINUTE_SECOND FROM a) 5959
|
||||
EXTRACT(SECOND FROM a) 59
|
||||
EXTRACT(MICROSECOND FROM a) 999999
|
||||
EXTRACT(DAY_MICROSECOND FROM a) 34225959999999
|
||||
EXTRACT(HOUR_MICROSECOND FROM a) 225959999999
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a) 5959999999
|
||||
EXTRACT(SECOND_MICROSECOND FROM a) 59999999
|
||||
CREATE TABLE t2 AS SELECT
|
||||
a,
|
||||
EXTRACT(YEAR FROM a),
|
||||
EXTRACT(YEAR_MONTH FROM a),
|
||||
EXTRACT(QUARTER FROM a),
|
||||
EXTRACT(MONTH FROM a),
|
||||
EXTRACT(WEEK FROM a),
|
||||
EXTRACT(DAY FROM a),
|
||||
EXTRACT(DAY_HOUR FROM a),
|
||||
EXTRACT(DAY_MINUTE FROM a),
|
||||
EXTRACT(DAY_SECOND FROM a),
|
||||
EXTRACT(HOUR FROM a),
|
||||
EXTRACT(HOUR_MINUTE FROM a),
|
||||
EXTRACT(HOUR_SECOND FROM a),
|
||||
EXTRACT(MINUTE FROM a),
|
||||
EXTRACT(MINUTE_SECOND FROM a),
|
||||
EXTRACT(SECOND FROM a),
|
||||
EXTRACT(MICROSECOND FROM a),
|
||||
EXTRACT(DAY_MICROSECOND FROM a),
|
||||
EXTRACT(HOUR_MICROSECOND FROM a),
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a),
|
||||
EXTRACT(SECOND_MICROSECOND FROM a)
|
||||
FROM t1;
|
||||
SELECT * FROM t2;
|
||||
a -838:59:59.999999
|
||||
EXTRACT(YEAR FROM a) 0
|
||||
EXTRACT(YEAR_MONTH FROM a) 0
|
||||
EXTRACT(QUARTER FROM a) 0
|
||||
EXTRACT(MONTH FROM a) 0
|
||||
EXTRACT(WEEK FROM a) 613566757
|
||||
EXTRACT(DAY FROM a) 34
|
||||
EXTRACT(DAY_HOUR FROM a) -3422
|
||||
EXTRACT(DAY_MINUTE FROM a) -342259
|
||||
EXTRACT(DAY_SECOND FROM a) -34225959
|
||||
EXTRACT(HOUR FROM a) -22
|
||||
EXTRACT(HOUR_MINUTE FROM a) -2259
|
||||
EXTRACT(HOUR_SECOND FROM a) -225959
|
||||
EXTRACT(MINUTE FROM a) -59
|
||||
EXTRACT(MINUTE_SECOND FROM a) -5959
|
||||
EXTRACT(SECOND FROM a) -59
|
||||
EXTRACT(MICROSECOND FROM a) -999999
|
||||
EXTRACT(DAY_MICROSECOND FROM a) -34225959999999
|
||||
EXTRACT(HOUR_MICROSECOND FROM a) -225959999999
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a) -5959999999
|
||||
EXTRACT(SECOND_MICROSECOND FROM a) -59999999
|
||||
a 838:59:59.999999
|
||||
EXTRACT(YEAR FROM a) 0
|
||||
EXTRACT(YEAR_MONTH FROM a) 0
|
||||
EXTRACT(QUARTER FROM a) 0
|
||||
EXTRACT(MONTH FROM a) 0
|
||||
EXTRACT(WEEK FROM a) 613566757
|
||||
EXTRACT(DAY FROM a) 34
|
||||
EXTRACT(DAY_HOUR FROM a) 3422
|
||||
EXTRACT(DAY_MINUTE FROM a) 342259
|
||||
EXTRACT(DAY_SECOND FROM a) 34225959
|
||||
EXTRACT(HOUR FROM a) 22
|
||||
EXTRACT(HOUR_MINUTE FROM a) 2259
|
||||
EXTRACT(HOUR_SECOND FROM a) 225959
|
||||
EXTRACT(MINUTE FROM a) 59
|
||||
EXTRACT(MINUTE_SECOND FROM a) 5959
|
||||
EXTRACT(SECOND FROM a) 59
|
||||
EXTRACT(MICROSECOND FROM a) 999999
|
||||
EXTRACT(DAY_MICROSECOND FROM a) 34225959999999
|
||||
EXTRACT(HOUR_MICROSECOND FROM a) 225959999999
|
||||
EXTRACT(MINUTE_MICROSECOND FROM a) 5959999999
|
||||
EXTRACT(SECOND_MICROSECOND FROM a) 59999999
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` time(6) DEFAULT NULL,
|
||||
`EXTRACT(YEAR FROM a)` int(4) DEFAULT NULL,
|
||||
`EXTRACT(YEAR_MONTH FROM a)` int(6) DEFAULT NULL,
|
||||
`EXTRACT(QUARTER FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(MONTH FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(WEEK FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(DAY FROM a)` int(2) DEFAULT NULL,
|
||||
`EXTRACT(DAY_HOUR FROM a)` int(5) DEFAULT NULL,
|
||||
`EXTRACT(DAY_MINUTE FROM a)` int(7) DEFAULT NULL,
|
||||
`EXTRACT(DAY_SECOND FROM a)` int(9) DEFAULT NULL,
|
||||
`EXTRACT(HOUR FROM a)` int(3) DEFAULT NULL,
|
||||
`EXTRACT(HOUR_MINUTE FROM a)` int(5) DEFAULT NULL,
|
||||
`EXTRACT(HOUR_SECOND FROM a)` int(7) DEFAULT NULL,
|
||||
`EXTRACT(MINUTE FROM a)` int(3) DEFAULT NULL,
|
||||
`EXTRACT(MINUTE_SECOND FROM a)` int(5) DEFAULT NULL,
|
||||
`EXTRACT(SECOND FROM a)` int(3) DEFAULT NULL,
|
||||
`EXTRACT(MICROSECOND FROM a)` int(7) DEFAULT NULL,
|
||||
`EXTRACT(DAY_MICROSECOND FROM a)` bigint(15) DEFAULT NULL,
|
||||
`EXTRACT(HOUR_MICROSECOND FROM a)` bigint(13) DEFAULT NULL,
|
||||
`EXTRACT(MINUTE_MICROSECOND FROM a)` bigint(11) DEFAULT NULL,
|
||||
`EXTRACT(SECOND_MICROSECOND FROM a)` int(9) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
|
||||
@@ -1232,7 +1232,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`g` timestamp NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file1.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -1284,7 +1284,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`g` timestamp NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file1.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -1351,7 +1351,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`g` timestamp NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file2.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -1389,7 +1389,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`g` timestamp NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file2.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -2778,7 +2778,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||
`g` timestamp(6) NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file1.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -2830,7 +2830,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`g` timestamp(6) NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file1.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -2897,7 +2897,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||
`g` timestamp(6) NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file2.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -2935,7 +2935,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`g` timestamp(6) NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file2.dat" INTO table t1;
|
||||
Warnings:
|
||||
|
||||
@@ -1233,7 +1233,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`g` timestamp NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file1.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -1285,7 +1285,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`g` timestamp NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file1.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -1352,7 +1352,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`g` timestamp NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file2.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -1390,7 +1390,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`g` timestamp NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file2.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -2779,7 +2779,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||
`g` timestamp(6) NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file1.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -2831,7 +2831,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`g` timestamp(6) NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file1.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -2898,7 +2898,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||
`g` timestamp(6) NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file2.dat" INTO table t1;
|
||||
Warnings:
|
||||
@@ -2936,7 +2936,7 @@ t1 CREATE TABLE `t1` (
|
||||
`f` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`g` timestamp(6) NULL DEFAULT NULL,
|
||||
`h` int(11) DEFAULT NULL,
|
||||
`i` int(11) NOT NULL DEFAULT '42'
|
||||
`i` int(11) NOT NULL DEFAULT 42
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
LOAD DATA INFILE "file2.dat" INTO table t1;
|
||||
Warnings:
|
||||
|
||||
@@ -1714,18 +1714,18 @@ GEOMETRY_COLUMNS CREATE TEMPORARY TABLE `GEOMETRY_COLUMNS` (
|
||||
`G_TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||
`G_TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`G_GEOMETRY_COLUMN` varchar(64) NOT NULL DEFAULT '',
|
||||
`STORAGE_TYPE` tinyint(2) NOT NULL DEFAULT '0',
|
||||
`GEOMETRY_TYPE` int(7) NOT NULL DEFAULT '0',
|
||||
`COORD_DIMENSION` tinyint(2) NOT NULL DEFAULT '0',
|
||||
`MAX_PPR` tinyint(2) NOT NULL DEFAULT '0',
|
||||
`SRID` smallint(5) NOT NULL DEFAULT '0'
|
||||
`STORAGE_TYPE` tinyint(2) NOT NULL DEFAULT 0,
|
||||
`GEOMETRY_TYPE` int(7) NOT NULL DEFAULT 0,
|
||||
`COORD_DIMENSION` tinyint(2) NOT NULL DEFAULT 0,
|
||||
`MAX_PPR` tinyint(2) NOT NULL DEFAULT 0,
|
||||
`SRID` smallint(5) NOT NULL DEFAULT 0
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW CREATE TABLE information_schema.spatial_ref_sys;
|
||||
Table Create Table
|
||||
SPATIAL_REF_SYS CREATE TEMPORARY TABLE `SPATIAL_REF_SYS` (
|
||||
`SRID` smallint(5) NOT NULL DEFAULT '0',
|
||||
`SRID` smallint(5) NOT NULL DEFAULT 0,
|
||||
`AUTH_NAME` varchar(512) NOT NULL DEFAULT '',
|
||||
`AUTH_SRID` int(5) NOT NULL DEFAULT '0',
|
||||
`AUTH_SRID` int(5) NOT NULL DEFAULT 0,
|
||||
`SRTEXT` varchar(2048) NOT NULL DEFAULT ''
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
create table t1(g GEOMETRY, pt POINT);
|
||||
|
||||
@@ -812,7 +812,7 @@ mysqltest_db1.t3 preload_keys status OK
|
||||
# RENAME (doesn't work for temporary tables, thus should fail).
|
||||
#
|
||||
RENAME TABLE t3 TO t3_1;
|
||||
ERROR 42000: DROP, ALTER command denied to user 'mysqltest_u1'@'localhost' for table 't3'
|
||||
ERROR 42000: INSERT, CREATE command denied to user 'mysqltest_u1'@'localhost' for table 't3_1'
|
||||
#
|
||||
# HANDLER OPEN/READ/CLOSE.
|
||||
#
|
||||
|
||||
@@ -2723,3 +2723,37 @@ select distinct a from t1 group by 'a';
|
||||
a
|
||||
2001-02-02
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-10324: Server crash in get_sel_arg_for_keypart or Assertion `n < size()' failed in Mem_root_array
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
job_id int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
job_cmd varbinary(60) NOT NULL DEFAULT '',
|
||||
job_namespace int(11) NOT NULL,
|
||||
job_title varbinary(255) NOT NULL,
|
||||
job_params blob NOT NULL,
|
||||
job_timestamp varbinary(14) DEFAULT NULL,
|
||||
job_random int(10) unsigned NOT NULL DEFAULT '0',
|
||||
job_token varbinary(32) NOT NULL DEFAULT '',
|
||||
job_token_timestamp varbinary(14) DEFAULT NULL,
|
||||
job_sha1 varbinary(32) NOT NULL DEFAULT '',
|
||||
job_attempts int(10) unsigned NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (job_id),
|
||||
KEY job_cmd (job_cmd,job_namespace,job_title,job_params(128)),
|
||||
KEY job_timestamp (job_timestamp),
|
||||
KEY job_sha1 (job_sha1),
|
||||
KEY job_cmd_token (job_cmd,job_token,job_random),
|
||||
KEY job_cmd_token_id (job_cmd,job_token,job_id)
|
||||
);
|
||||
INSERT INTO t1 VALUES
|
||||
(NULL, 'foo', 1, 'foo', 'foo', 'foo', 1, 'foo', 'foo', 'foo', 1),
|
||||
(NULL, 'bar', 2, 'bar', 'bar', 'bar', 2, 'bar', 'bar', 'bar', 2);
|
||||
SELECT DISTINCT job_cmd FROM t1 WHERE job_cmd IN ('foobar','null');
|
||||
job_cmd
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (f1 INT NOT NULL, f2 VARCHAR(3) NOT NULL, KEY(f1), KEY(f2, f1));
|
||||
INSERT INTO t1 VALUES (0,'foo'),(1,'bar');
|
||||
SELECT 1 IN ( SELECT COUNT( DISTINCT f2 ) FROM t1 WHERE f1 <= 4 );
|
||||
1 IN ( SELECT COUNT( DISTINCT f2 ) FROM t1 WHERE f1 <= 4 )
|
||||
0
|
||||
drop table t1;
|
||||
|
||||
@@ -123,4 +123,39 @@ id xtext optionen
|
||||
2 number 22,25
|
||||
1 select Kabel mit Stecker 5-polig,Kabel ohne Stecker
|
||||
DROP TABLE t1, t2;
|
||||
# Port of testcase:
|
||||
#
|
||||
# Bug#20819199 ASSERTION FAILED IN TEST_IF_SKIP_SORT_ORDER
|
||||
#
|
||||
CREATE TABLE t0 ( a INT );
|
||||
INSERT INTO t0 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
||||
CREATE TABLE t1 (
|
||||
pk INT NOT NULL AUTO_INCREMENT,
|
||||
a INT,
|
||||
b INT,
|
||||
PRIMARY KEY (pk),
|
||||
KEY idx1 (a),
|
||||
KEY idx2 (b, a),
|
||||
KEY idx3 (a, b)
|
||||
) ENGINE = InnoDB;
|
||||
INSERT INTO t1 (a, b) SELECT t01.a, t02.a FROM t0 t01, t0 t02;
|
||||
ANALYZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
EXPLAIN SELECT DISTINCT a, MAX(b) FROM t1 WHERE a >= 0 GROUP BY a,a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx1,idx3 idx3 5 NULL 100 Using where; Using index
|
||||
SELECT DISTINCT a, MAX(b) FROM t1 WHERE a >= 0 GROUP BY a,a;
|
||||
a MAX(b)
|
||||
1 10
|
||||
2 10
|
||||
3 10
|
||||
4 10
|
||||
5 10
|
||||
6 10
|
||||
7 10
|
||||
8 10
|
||||
9 10
|
||||
10 10
|
||||
DROP TABLE t0, t1;
|
||||
# End of tests
|
||||
|
||||
@@ -2378,6 +2378,7 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
EXPLAIN SELECT max(b), a FROM t1 GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL a 5 NULL 8 Using index for group-by
|
||||
@@ -2387,6 +2388,7 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM (SELECT max(b), a FROM t1 GROUP BY a) b;
|
||||
max(b) a
|
||||
@@ -2398,6 +2400,7 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
FLUSH STATUS;
|
||||
(SELECT max(b), a FROM t1 GROUP BY a) UNION
|
||||
(SELECT max(b), a FROM t1 GROUP BY a);
|
||||
@@ -2410,6 +2413,7 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 16
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
EXPLAIN (SELECT max(b), a FROM t1 GROUP BY a) UNION
|
||||
(SELECT max(b), a FROM t1 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
@@ -2462,6 +2466,7 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
DELETE FROM t3;
|
||||
FLUSH STATUS;
|
||||
INSERT INTO t3 SELECT 1, (SELECT MAX(b) FROM t1 GROUP BY a HAVING a < 2)
|
||||
@@ -2470,12 +2475,14 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
FLUSH STATUS;
|
||||
DELETE FROM t3 WHERE (SELECT MAX(b) FROM t1 GROUP BY a HAVING a < 2) > 10000;
|
||||
SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 0
|
||||
Handler_read_retry 0
|
||||
FLUSH STATUS;
|
||||
DELETE FROM t3 WHERE (SELECT (SELECT MAX(b) FROM t1 GROUP BY a HAVING a < 2) x
|
||||
FROM t1) > 10000;
|
||||
@@ -2484,6 +2491,7 @@ SHOW STATUS LIKE 'handler_read__e%';
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
Handler_read_next 1
|
||||
Handler_read_retry 0
|
||||
DROP TABLE t1,t2,t3;
|
||||
CREATE TABLE t1 (a int, INDEX idx(a));
|
||||
INSERT INTO t1 VALUES
|
||||
|
||||
@@ -12,6 +12,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -26,6 +27,7 @@ Handler_read_key 0
|
||||
Handler_read_last 1
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -42,6 +44,7 @@ Handler_read_key 0
|
||||
Handler_read_last 0
|
||||
Handler_read_next 2
|
||||
Handler_read_prev 0
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
@@ -58,6 +61,7 @@ Handler_read_key 0
|
||||
Handler_read_last 1
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 2
|
||||
Handler_read_retry 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
|
||||
@@ -292,7 +292,7 @@ set optimizer_switch='derived_merge=off,derived_with_keys=off';
|
||||
explain select * from (select * from t1 where key1 = 3 or key2 =3) as Z where key8 >5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2 Using where
|
||||
2 DERIVED t1 index_merge i1,i2 i1,i2 4,4 NULL 2 Using union(i1,i2); Using where
|
||||
2 DERIVED t1 index_merge i1,i2,i8 i1,i2 4,4 NULL 2 Using union(i1,i2); Using where
|
||||
set optimizer_switch=@tmp_optimizer_switch;
|
||||
create table t3 like t0;
|
||||
insert into t3 select * from t0;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user