Merge chunk from trunk.
This commit is contained in:
commit
c425bf421d
@ -125,6 +125,14 @@ ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR
|
||||
|
||||
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
|
||||
|
||||
# This definition is necessary to work around a bug with Intellisense described
|
||||
# here: http://tinyurl.com/2cb428. Syntax highlighting is important for proper
|
||||
# debugger functionality.
|
||||
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
MESSAGE(STATUS "Detected 64-bit platform.")
|
||||
ADD_DEFINITIONS("-D_WIN64")
|
||||
ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
# Search for the tools (mt, makecat, signtool) necessary for embedding
|
||||
# manifests and signing executables with the MySQL AB authenticode cert.
|
||||
|
@ -1125,6 +1125,7 @@ int main(int argc,char *argv[])
|
||||
}
|
||||
if (mysql_server_init(emb_argc, emb_argv, (char**) server_default_groups))
|
||||
{
|
||||
put_error(NULL);
|
||||
free_defaults(defaults_argv);
|
||||
my_end(0);
|
||||
exit(1);
|
||||
|
@ -109,6 +109,8 @@ static char *opt_password=0,*current_user=0,
|
||||
*log_error_file= NULL;
|
||||
static char **defaults_argv= 0;
|
||||
static char compatible_mode_normal_str[255];
|
||||
/* Server supports character_set_results session variable? */
|
||||
static my_bool server_supports_switching_charsets= TRUE;
|
||||
static ulong opt_compatible_mode= 0;
|
||||
#define MYSQL_OPT_MASTER_DATA_EFFECTIVE_SQL 1
|
||||
#define MYSQL_OPT_MASTER_DATA_COMMENTED_SQL 2
|
||||
@ -1011,11 +1013,27 @@ static int mysql_query_with_error_report(MYSQL *mysql_con, MYSQL_RES **res,
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Switch charset for results to some specified charset. If the server does not
|
||||
support character_set_results variable, nothing can be done here. As for
|
||||
whether something should be done here, future new callers of this function
|
||||
should be aware that the server lacking the facility of switching charsets is
|
||||
treated as success.
|
||||
|
||||
@note If the server lacks support, then nothing is changed and no error
|
||||
condition is returned.
|
||||
|
||||
@returns whether there was an error or not
|
||||
*/
|
||||
static int switch_character_set_results(MYSQL *mysql, const char *cs_name)
|
||||
{
|
||||
char query_buffer[QUERY_LENGTH];
|
||||
size_t query_length;
|
||||
|
||||
/* Server lacks facility. This is not an error, by arbitrary decision . */
|
||||
if (!server_supports_switching_charsets)
|
||||
return FALSE;
|
||||
|
||||
query_length= my_snprintf(query_buffer,
|
||||
sizeof (query_buffer),
|
||||
"SET SESSION character_set_results = '%s'",
|
||||
@ -1111,11 +1129,14 @@ static int connect_to_db(char *host, char *user,char *passwd)
|
||||
DB_error(&mysql_connection, "when trying to connect");
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
/*
|
||||
Don't dump SET NAMES with a pre-4.1 server (bug#7997).
|
||||
*/
|
||||
if (mysql_get_server_version(&mysql_connection) < 40100)
|
||||
{
|
||||
/* Don't dump SET NAMES with a pre-4.1 server (bug#7997). */
|
||||
opt_set_charset= 0;
|
||||
|
||||
/* Don't switch charsets for 4.1 and earlier. (bug#34192). */
|
||||
server_supports_switching_charsets= FALSE;
|
||||
}
|
||||
/*
|
||||
As we're going to set SQL_MODE, it would be lost on reconnect, so we
|
||||
cannot reconnect.
|
||||
@ -3285,6 +3306,7 @@ static int do_show_master_status(MYSQL *mysql_con)
|
||||
my_printf_error(0, "Error: Binlogging on server not active",
|
||||
MYF(0));
|
||||
mysql_free_result(master);
|
||||
maybe_exit(EX_MYSQLERR);
|
||||
return 1;
|
||||
}
|
||||
mysql_free_result(master);
|
||||
|
@ -136,6 +136,8 @@ struct editline {
|
||||
|
||||
protected int el_editmode(EditLine *, int, const char **);
|
||||
|
||||
#define el_isprint(x) ((unsigned char) (x) < 0x80 ? isprint(x) : 1)
|
||||
|
||||
#ifdef DEBUG
|
||||
#define EL_ABORT(a) do { \
|
||||
fprintf(el->el_errfile, "%s, %d: ", \
|
||||
|
@ -618,7 +618,7 @@ key__decode_char(char *buf, int cnt, int ch)
|
||||
} else if (ch == '\\') {
|
||||
buf[cnt++] = '\\';
|
||||
buf[cnt] = '\\';
|
||||
} else if (ch == ' ' || (isprint(ch) && !isspace(ch))) {
|
||||
} else if (ch == ' ' || (el_isprint(ch) && !isspace(ch))) {
|
||||
buf[cnt] = ch;
|
||||
} else {
|
||||
buf[cnt++] = '\\';
|
||||
@ -660,7 +660,7 @@ key__decode_str(const char *str, char *buf, const char *sep)
|
||||
} else if (*p == '^' || *p == '\\') {
|
||||
*b++ = '\\';
|
||||
*b++ = *p;
|
||||
} else if (*p == ' ' || (isprint((unsigned char) *p) &&
|
||||
} else if (*p == ' ' || (el_isprint((unsigned char) *p) &&
|
||||
!isspace((unsigned char) *p))) {
|
||||
*b++ = *p;
|
||||
} else {
|
||||
|
@ -961,7 +961,7 @@ map_init_nls(EditLine *el)
|
||||
el_action_t *map = el->el_map.key;
|
||||
|
||||
for (i = 0200; i <= 0377; i++)
|
||||
if (isprint(i))
|
||||
if (el_isprint(i))
|
||||
map[i] = ED_INSERT;
|
||||
}
|
||||
|
||||
|
@ -508,7 +508,7 @@ el_gets(EditLine *el, int *nread)
|
||||
el->el_chared.c_redo.pos < el->el_chared.c_redo.lim) {
|
||||
if (cmdnum == VI_DELETE_PREV_CHAR &&
|
||||
el->el_chared.c_redo.pos != el->el_chared.c_redo.buf
|
||||
&& isprint((unsigned char)el->el_chared.c_redo.pos[-1]))
|
||||
&& el_isprint((unsigned char)el->el_chared.c_redo.pos[-1]))
|
||||
el->el_chared.c_redo.pos--;
|
||||
else
|
||||
*el->el_chared.c_redo.pos++ = ch;
|
||||
|
@ -88,7 +88,7 @@ private void
|
||||
re_addc(EditLine *el, int c)
|
||||
{
|
||||
|
||||
if (isprint(c)) {
|
||||
if (el_isprint(c)) {
|
||||
re_putc(el, c, 1);
|
||||
return;
|
||||
}
|
||||
@ -964,7 +964,7 @@ re_refresh_cursor(EditLine *el)
|
||||
h = 1;
|
||||
v++;
|
||||
}
|
||||
} else if (!isprint((unsigned char) c)) {
|
||||
} else if (!el_isprint((unsigned char) c)) {
|
||||
h += 3;
|
||||
if (h > th) { /* if overflow, compensate */
|
||||
h = h - th;
|
||||
@ -1057,7 +1057,7 @@ re_fastaddc(EditLine *el)
|
||||
char mc = (c == '\177') ? '?' : (c | 0100);
|
||||
re_fastputc(el, '^');
|
||||
re_fastputc(el, mc);
|
||||
} else if (isprint((unsigned char) c)) { /* normal char */
|
||||
} else if (el_isprint((unsigned char) c)) { /* normal char */
|
||||
re_fastputc(el, c);
|
||||
} else {
|
||||
re_fastputc(el, '\\');
|
||||
|
@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc)
|
||||
AC_CANONICAL_SYSTEM
|
||||
# The Docs Makefile.am parses this line!
|
||||
# remember to also change ndb version below and update version.c in ndb
|
||||
AM_INIT_AUTOMAKE(mysql, 5.0.58)
|
||||
AM_INIT_AUTOMAKE(mysql, 5.0.60)
|
||||
AM_CONFIG_HEADER([include/config.h:config.h.in])
|
||||
|
||||
PROTOCOL_VERSION=10
|
||||
@ -23,7 +23,7 @@ NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION:0:0
|
||||
# ndb version
|
||||
NDB_VERSION_MAJOR=5
|
||||
NDB_VERSION_MINOR=0
|
||||
NDB_VERSION_BUILD=58
|
||||
NDB_VERSION_BUILD=60
|
||||
NDB_VERSION_STATUS=""
|
||||
|
||||
# Set all version vars based on $VERSION. How do we do this more elegant ?
|
||||
|
@ -257,60 +257,6 @@ inline double ulonglong2double(ulonglong value)
|
||||
|
||||
|
||||
#define STACK_DIRECTION -1
|
||||
|
||||
/* Optimized store functions for Intel x86 */
|
||||
|
||||
#ifndef _WIN64
|
||||
#define sint2korr(A) (*((int16 *) (A)))
|
||||
#define sint3korr(A) ((int32) ((((uchar) (A)[2]) & 128) ? \
|
||||
(((uint32) 255L << 24) | \
|
||||
(((uint32) (uchar) (A)[2]) << 16) |\
|
||||
(((uint32) (uchar) (A)[1]) << 8) | \
|
||||
((uint32) (uchar) (A)[0])) : \
|
||||
(((uint32) (uchar) (A)[2]) << 16) |\
|
||||
(((uint32) (uchar) (A)[1]) << 8) | \
|
||||
((uint32) (uchar) (A)[0])))
|
||||
#define sint4korr(A) (*((long *) (A)))
|
||||
#define uint2korr(A) (*((uint16 *) (A)))
|
||||
/*
|
||||
ATTENTION !
|
||||
|
||||
Please, note, uint3korr reads 4 bytes (not 3) !
|
||||
It means, that you have to provide enough allocated space !
|
||||
*/
|
||||
#define uint3korr(A) (long) (*((unsigned int *) (A)) & 0xFFFFFF)
|
||||
#define uint4korr(A) (*((unsigned long *) (A)))
|
||||
#define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
(((uint32) ((uchar) (A)[2])) << 16) +\
|
||||
(((uint32) ((uchar) (A)[3])) << 24)) +\
|
||||
(((ulonglong) ((uchar) (A)[4])) << 32))
|
||||
#define uint8korr(A) (*((ulonglong *) (A)))
|
||||
#define sint8korr(A) (*((longlong *) (A)))
|
||||
#define int2store(T,A) *((uint16*) (T))= (uint16) (A)
|
||||
#define int3store(T,A) { *(T)= (uchar) ((A));\
|
||||
*(T+1)=(uchar) (((uint) (A) >> 8));\
|
||||
*(T+2)=(uchar) (((A) >> 16)); }
|
||||
#define int4store(T,A) *((long *) (T))= (long) (A)
|
||||
#define int5store(T,A) { *(T)= (uchar)((A));\
|
||||
*((T)+1)=(uchar) (((A) >> 8));\
|
||||
*((T)+2)=(uchar) (((A) >> 16));\
|
||||
*((T)+3)=(uchar) (((A) >> 24)); \
|
||||
*((T)+4)=(uchar) (((A) >> 32)); }
|
||||
#define int8store(T,A) *((ulonglong *) (T))= (ulonglong) (A)
|
||||
|
||||
#define doubleget(V,M) do { *((long *) &V) = *((long*) M); \
|
||||
*(((long *) &V)+1) = *(((long*) M)+1); } while(0)
|
||||
#define doublestore(T,V) do { *((long *) T) = *((long*) &V); \
|
||||
*(((long *) T)+1) = *(((long*) &V)+1); } while(0)
|
||||
#define float4get(V,M) { *((long *) &(V)) = *((long*) (M)); }
|
||||
#define floatstore(T,V) memcpy((byte*)(T), (byte*)(&V), sizeof(float))
|
||||
#define floatget(V,M) memcpy((byte*)(&V), (byte*)(M), sizeof(float))
|
||||
#define float8get(V,M) doubleget((V),(M))
|
||||
#define float4store(V,M) memcpy((byte*) V,(byte*) (&M),sizeof(float))
|
||||
#define float8store(V,M) doublestore((V),(M))
|
||||
#endif /* _WIN64 */
|
||||
|
||||
#define HAVE_PERROR
|
||||
#define HAVE_VFPRINT
|
||||
#define HAVE_RENAME /* Have rename() as function */
|
||||
|
@ -1053,7 +1053,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
||||
*/
|
||||
|
||||
/* Optimized store functions for Intel x86 */
|
||||
#if defined(__i386__) && !defined(_WIN64)
|
||||
#if defined(__i386__) || defined(_WIN32)
|
||||
#define sint2korr(A) (*((int16 *) (A)))
|
||||
#define sint3korr(A) ((int32) ((((uchar) (A)[2]) & 128) ? \
|
||||
(((uint32) 255L << 24) | \
|
||||
@ -1065,7 +1065,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
||||
((uint32) (uchar) (A)[0])))
|
||||
#define sint4korr(A) (*((long *) (A)))
|
||||
#define uint2korr(A) (*((uint16 *) (A)))
|
||||
#ifdef HAVE_purify
|
||||
#if defined(HAVE_purify) && !defined(_WIN32)
|
||||
#define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
(((uint32) ((uchar) (A)[2])) << 16))
|
||||
@ -1077,7 +1077,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
||||
It means, that you have to provide enough allocated space !
|
||||
*/
|
||||
#define uint3korr(A) (long) (*((unsigned int *) (A)) & 0xFFFFFF)
|
||||
#endif
|
||||
#endif /* HAVE_purify && !_WIN32 */
|
||||
#define uint4korr(A) (*((uint32 *) (A)))
|
||||
#define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
@ -1116,9 +1116,8 @@ do { doubleget_union _tmp; \
|
||||
#define floatstore(T,V) memcpy((byte*)(T), (byte*)(&V),sizeof(float))
|
||||
#define floatget(V,M) memcpy((byte*) &V,(byte*) (M),sizeof(float))
|
||||
#define float8store(V,M) doublestore((V),(M))
|
||||
#endif /* __i386__ */
|
||||
#else
|
||||
|
||||
#ifndef sint2korr
|
||||
/*
|
||||
We're here if it's not a IA-32 architecture (Win32 and UNIX IA-32 defines
|
||||
were done before)
|
||||
@ -1243,7 +1242,7 @@ do { doubleget_union _tmp; \
|
||||
#define float8store(V,M) doublestore((V),(M))
|
||||
#endif /* WORDS_BIGENDIAN */
|
||||
|
||||
#endif /* sint2korr */
|
||||
#endif /* __i386__ OR _WIN32 */
|
||||
|
||||
/*
|
||||
Macro for reading 32-bit integer from network byte order (big-endian)
|
||||
|
@ -181,7 +181,7 @@ extern int pthread_mutex_destroy (pthread_mutex_t *);
|
||||
#define pthread_mutex_unlock(A) LeaveCriticalSection(A)
|
||||
#define pthread_mutex_destroy(A) DeleteCriticalSection(A)
|
||||
#define my_pthread_setprio(A,B) SetThreadPriority(GetCurrentThread(), (B))
|
||||
#define pthread_kill(A,B) pthread_dummy(ESRCH)
|
||||
#define pthread_kill(A,B) pthread_dummy((A) ? 0 : ESRCH)
|
||||
#endif /* OS2 */
|
||||
|
||||
/* Dummy defines for easier code */
|
||||
@ -445,14 +445,14 @@ struct tm *gmtime_r(const time_t *clock, struct tm *res);
|
||||
#define pthread_attr_setdetachstate(A,B) pthread_dummy(0)
|
||||
#define pthread_create(A,B,C,D) pthread_create((A),*(B),(C),(D))
|
||||
#define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C))
|
||||
#define pthread_kill(A,B) pthread_dummy(ESRCH)
|
||||
#define pthread_kill(A,B) pthread_dummy((A) ? 0 : ESRCH)
|
||||
#undef pthread_detach_this_thread
|
||||
#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(&tmp); }
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DARWIN5_THREADS
|
||||
#define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C))
|
||||
#define pthread_kill(A,B) pthread_dummy(ESRCH)
|
||||
#define pthread_kill(A,B) pthread_dummy((A) ? 0 : ESRCH)
|
||||
#define pthread_condattr_init(A) pthread_dummy(0)
|
||||
#define pthread_condattr_destroy(A) pthread_dummy(0)
|
||||
#undef pthread_detach_this_thread
|
||||
@ -472,7 +472,7 @@ struct tm *gmtime_r(const time_t *clock, struct tm *res);
|
||||
#ifndef pthread_sigmask
|
||||
#define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C))
|
||||
#endif
|
||||
#define pthread_kill(A,B) pthread_dummy(ESRCH)
|
||||
#define pthread_kill(A,B) pthread_dummy((A) ? 0 : ESRCH)
|
||||
#undef pthread_detach_this_thread
|
||||
#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(&tmp); }
|
||||
#elif !defined(__NETWARE__) /* HAVE_PTHREAD_ATTR_CREATE && !HAVE_SIGWAIT */
|
||||
|
@ -15,6 +15,7 @@
|
||||
|
||||
|
||||
extern const char *unknown_sqlstate;
|
||||
extern const char *cant_connect_sqlstate;
|
||||
extern const char *not_error_sqlstate;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -1486,7 +1486,7 @@ my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql)
|
||||
|
||||
const char *STDCALL mysql_sqlstate(MYSQL *mysql)
|
||||
{
|
||||
return mysql->net.sqlstate;
|
||||
return mysql ? mysql->net.sqlstate : cant_connect_sqlstate;
|
||||
}
|
||||
|
||||
uint STDCALL mysql_warning_count(MYSQL *mysql)
|
||||
@ -2456,7 +2456,7 @@ static my_bool execute(MYSQL_STMT *stmt, char *packet, ulong length)
|
||||
int4store(buff+5, 1); /* iteration count */
|
||||
|
||||
res= test(cli_advanced_command(mysql, COM_STMT_EXECUTE, buff, sizeof(buff),
|
||||
packet, length, 1, NULL) ||
|
||||
packet, length, 1, stmt) ||
|
||||
(*mysql->methods->read_query_result)(mysql));
|
||||
stmt->affected_rows= mysql->affected_rows;
|
||||
stmt->server_status= mysql->server_status;
|
||||
@ -2673,7 +2673,7 @@ stmt_read_row_from_cursor(MYSQL_STMT *stmt, unsigned char **row)
|
||||
int4store(buff + 4, stmt->prefetch_rows); /* number of rows to fetch */
|
||||
if ((*mysql->methods->advanced_command)(mysql, COM_STMT_FETCH,
|
||||
buff, sizeof(buff), NullS, 0,
|
||||
1, NULL))
|
||||
1, stmt))
|
||||
{
|
||||
set_stmt_errmsg(stmt, net->last_error, net->last_errno, net->sqlstate);
|
||||
return 1;
|
||||
@ -3340,7 +3340,7 @@ mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number,
|
||||
*/
|
||||
if ((*mysql->methods->advanced_command)(mysql, COM_STMT_SEND_LONG_DATA,
|
||||
buff, sizeof(buff), data,
|
||||
length, 1, NULL))
|
||||
length, 1, stmt))
|
||||
{
|
||||
set_stmt_errmsg(stmt, mysql->net.last_error,
|
||||
mysql->net.last_errno, mysql->net.sqlstate);
|
||||
@ -4737,6 +4737,13 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
|
||||
MYSQL_DATA *result= &stmt->result;
|
||||
DBUG_ENTER("mysql_stmt_store_result");
|
||||
|
||||
if (!mysql)
|
||||
{
|
||||
/* mysql can be reset in mysql_close called from mysql_reconnect */
|
||||
set_stmt_error(stmt, CR_SERVER_LOST, unknown_sqlstate);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
mysql= mysql->last_used_con;
|
||||
|
||||
if (!stmt->field_count)
|
||||
@ -4762,7 +4769,7 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
|
||||
int4store(buff, stmt->stmt_id);
|
||||
int4store(buff + 4, (int)~0); /* number of rows to fetch */
|
||||
if (cli_advanced_command(mysql, COM_STMT_FETCH, buff, sizeof(buff),
|
||||
NullS, 0, 1, NULL))
|
||||
NullS, 0, 1, stmt))
|
||||
{
|
||||
set_stmt_errmsg(stmt, net->last_error, net->last_errno, net->sqlstate);
|
||||
DBUG_RETURN(1);
|
||||
@ -4949,7 +4956,7 @@ static my_bool reset_stmt_handle(MYSQL_STMT *stmt, uint flags)
|
||||
char buff[MYSQL_STMT_HEADER]; /* packet header: 4 bytes for stmt id */
|
||||
int4store(buff, stmt->stmt_id);
|
||||
if ((*mysql->methods->advanced_command)(mysql, COM_STMT_RESET, buff,
|
||||
sizeof(buff), 0, 0, 0, NULL))
|
||||
sizeof(buff), 0, 0, 0, stmt))
|
||||
{
|
||||
set_stmt_errmsg(stmt, mysql->net.last_error, mysql->net.last_errno,
|
||||
mysql->net.sqlstate);
|
||||
|
@ -47,6 +47,8 @@ C_MODE_START
|
||||
#include <sql_common.h>
|
||||
#include "embedded_priv.h"
|
||||
|
||||
extern unsigned int mysql_server_last_errno;
|
||||
extern char mysql_server_last_error[MYSQL_ERRMSG_SIZE];
|
||||
static my_bool emb_read_query_result(MYSQL *mysql);
|
||||
|
||||
|
||||
@ -1084,3 +1086,11 @@ bool Protocol::net_store_data(const char *from, uint length)
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void vprint_msg_to_log(enum loglevel level __attribute__((unused)),
|
||||
const char *format, va_list argsi)
|
||||
{
|
||||
vsnprintf(mysql_server_last_error, sizeof(mysql_server_last_error),
|
||||
format, argsi);
|
||||
mysql_server_last_errno= CR_UNKNOWN_ERROR;
|
||||
}
|
||||
|
@ -270,6 +270,9 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
|
||||
if (share->options & HA_OPTION_COMPRESS_RECORD)
|
||||
share->base.max_key_length+=2; /* For safety */
|
||||
|
||||
/* Add space for node pointer */
|
||||
share->base.max_key_length+= share->base.key_reflength;
|
||||
|
||||
if (!my_multi_malloc(MY_WME,
|
||||
&share,sizeof(*share),
|
||||
&share->state.rec_per_key_part,sizeof(long)*key_parts,
|
||||
@ -791,8 +794,17 @@ static void setup_key_functions(register MI_KEYDEF *keyinfo)
|
||||
keyinfo->get_key= _mi_get_pack_key;
|
||||
if (keyinfo->seg[0].flag & HA_PACK_KEY)
|
||||
{ /* Prefix compression */
|
||||
/*
|
||||
_mi_prefix_search() compares end-space against ASCII blank (' ').
|
||||
It cannot be used for character sets, that do not encode the
|
||||
blank character like ASCII does. UCS2 is an example. All
|
||||
character sets with a fixed width > 1 or a mimimum width > 1
|
||||
cannot represent blank like ASCII does. In these cases we have
|
||||
to use _mi_seq_search() for the search.
|
||||
*/
|
||||
if (!keyinfo->seg->charset || use_strnxfrm(keyinfo->seg->charset) ||
|
||||
(keyinfo->seg->flag & HA_NULL_PART))
|
||||
(keyinfo->seg->flag & HA_NULL_PART) ||
|
||||
(keyinfo->seg->charset->mbminlen > 1))
|
||||
keyinfo->bin_search=_mi_seq_search;
|
||||
else
|
||||
keyinfo->bin_search=_mi_prefix_search;
|
||||
|
@ -13,6 +13,8 @@
|
||||
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
@ -62,8 +64,22 @@ select a sounds like a from t1;
|
||||
select 1 from t1 order by cast(a as char(1));
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#27580 SPACE() function collation bug?
|
||||
#
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
drop table t1;
|
||||
|
||||
DROP DATABASE d1;
|
||||
# Restore settings
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
|
25
mysql-test/include/ctype_like_range_f1f2.inc
Normal file
25
mysql-test/include/ctype_like_range_f1f2.inc
Normal file
@ -0,0 +1,25 @@
|
||||
#
|
||||
# Bug#32510 LIKE search fails with indexed 'eucjpms' and 'ujis' char column
|
||||
#
|
||||
# Testing my_ctype_like_range_xxx
|
||||
# (used in LIKE optimization for an indexed column)
|
||||
#
|
||||
|
||||
# Create table using @@character_set_connection and @@collation_connection
|
||||
# for the string columns.
|
||||
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
|
||||
# Check pattern (important for ucs2, utf16, utf32)
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
|
||||
--echo 3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
DROP TABLE t1;
|
@ -1325,6 +1325,7 @@ set @a=repeat(' ',20);
|
||||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'v' at row 1
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||
concat('*',v,'*',c,'*',t,'*')
|
||||
*+ *+*+ *
|
||||
|
@ -21,3 +21,19 @@ show status like "binlog_cache_disk_use";
|
||||
Variable_name Value
|
||||
Binlog_cache_disk_use 1
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE FUNCTION bug23333()
|
||||
RETURNS int(11)
|
||||
DETERMINISTIC
|
||||
BEGIN
|
||||
INSERT INTO t1 VALUES (NULL);
|
||||
SELECT COUNT(*) FROM t1 INTO @a;
|
||||
RETURN @a;
|
||||
END|
|
||||
INSERT INTO t2 VALUES (2),(10+bug23333());
|
||||
SHOW MASTER STATUS;
|
||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||
# 184136
|
||||
DROP FUNCTION bug23333;
|
||||
DROP TABLE t1, t2;
|
||||
|
@ -53,3 +53,41 @@ a b
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: ''
|
||||
drop table if exists t1;
|
||||
CREATE TABLE t1 (b int(2) zerofill, c int(2) zerofill);
|
||||
INSERT INTO t1 (b,c) VALUES (1,2), (1,1), (2,2);
|
||||
SELECT CONCAT(b,c), CONCAT(b,c) = '0101' FROM t1;
|
||||
CONCAT(b,c) CONCAT(b,c) = '0101'
|
||||
0102 0
|
||||
0101 1
|
||||
0202 0
|
||||
EXPLAIN EXTENDED SELECT b,c FROM t1 WHERE b = 1 AND CONCAT(b,c) = '0101';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1` where ((`test`.`t1`.`b` = 1) and (concat(_binary'01',`test`.`t1`.`c`) = _latin1'0101'))
|
||||
SELECT b,c FROM t1 WHERE b = 1 AND CONCAT(b,c) = '0101';
|
||||
b c
|
||||
01 01
|
||||
CREATE TABLE t2 (a int);
|
||||
INSERT INTO t2 VALUES (1),(2);
|
||||
SELECT a,
|
||||
(SELECT COUNT(*) FROM t1
|
||||
WHERE b = t2.a AND CONCAT(b,c) = CONCAT('0',t2.a,'01')) x
|
||||
FROM t2 ORDER BY a;
|
||||
a x
|
||||
1 1
|
||||
2 0
|
||||
EXPLAIN EXTENDED
|
||||
SELECT a,
|
||||
(SELECT COUNT(*) FROM t1
|
||||
WHERE b = t2.a AND CONCAT(b,c) = CONCAT('0',t2.a,'01')) x
|
||||
FROM t2 ORDER BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using filesort
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,(select count(0) AS `COUNT(*)` from `test`.`t1` where ((`test`.`t1`.`b` = `test`.`t2`.`a`) and (concat(`test`.`t1`.`b`,`test`.`t1`.`c`) = concat(_latin1'0',`test`.`t2`.`a`,_latin1'01')))) AS `x` from `test`.`t2` order by `test`.`t2`.`a`
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.0 tests
|
||||
|
@ -1532,4 +1532,18 @@ Handler_read_prev 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_next 7
|
||||
drop table t1,t2;
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY (c1) USING BTREE);
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1) USING HASH) ENGINE=MEMORY;
|
||||
SHOW INDEX FROM t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 1 c1 1 c1 NULL 0 NULL NULL YES HASH
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING HASH (c1) USING BTREE) ENGINE=MEMORY;
|
||||
SHOW INDEX FROM t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 1 c1 1 c1 A NULL NULL NULL YES BTREE
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
@ -3,6 +3,8 @@ SET @test_character_set= 'big5';
|
||||
SET @test_collation= 'big5_chinese_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
@ -69,10 +71,27 @@ select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) default NULL,
|
||||
`level` smallint(5) unsigned default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=big5
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
SET NAMES big5;
|
||||
SET collation_connection='big5_chinese_ci';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
@ -124,6 +143,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET collation_connection='big5_bin';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
delete from t1;
|
||||
@ -174,6 +210,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET NAMES big5;
|
||||
CREATE TABLE t1 (a text) character set big5;
|
||||
INSERT INTO t1 VALUES ('ùØ');
|
||||
|
@ -2,6 +2,192 @@ DROP TABLE IF EXISTS t1;
|
||||
SHOW COLLATION LIKE 'cp1250_czech_cs';
|
||||
Collation Charset Id Default Compiled Sortlen
|
||||
cp1250_czech_cs cp1250 34 Yes 2
|
||||
SET @test_character_set= 'cp1250';
|
||||
SET @test_collation= 'cp1250_general_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
USE d1;
|
||||
CREATE TABLE t1 (c CHAR(10), KEY(c));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c char(10) cp1250_general_ci YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('aaa'),('aaaa'),('aaaaa');
|
||||
SELECT c as want3results FROM t1 WHERE c LIKE 'aaa%';
|
||||
want3results
|
||||
aaa
|
||||
aaaa
|
||||
aaaaa
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 varchar(15), KEY c1 (c1(2)));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c1 varchar(15) cp1250_general_ci YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('location'),('loberge'),('lotre'),('boabab');
|
||||
SELECT c1 as want3results from t1 where c1 like 'l%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want3results from t1 where c1 like 'lo%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want1result from t1 where c1 like 'loc%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'loca%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locat%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locati%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locatio%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'location%';
|
||||
want1result
|
||||
location
|
||||
DROP TABLE t1;
|
||||
create table t1 (a set('a') not null);
|
||||
insert into t1 values (),();
|
||||
Warnings:
|
||||
Warning 1364 Field 'a' doesn't have a default value
|
||||
select cast(a as char(1)) from t1;
|
||||
cast(a as char(1))
|
||||
|
||||
|
||||
select a sounds like a from t1;
|
||||
a sounds like a
|
||||
1
|
||||
1
|
||||
select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) default NULL,
|
||||
`level` smallint(5) unsigned default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=cp1250
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
SET @test_character_set= 'cp1250';
|
||||
SET @test_collation= 'cp1250_czech_cs';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
USE d1;
|
||||
CREATE TABLE t1 (c CHAR(10), KEY(c));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c char(10) cp1250_czech_cs YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('aaa'),('aaaa'),('aaaaa');
|
||||
SELECT c as want3results FROM t1 WHERE c LIKE 'aaa%';
|
||||
want3results
|
||||
aaa
|
||||
aaaa
|
||||
aaaaa
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 varchar(15), KEY c1 (c1(2)));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c1 varchar(15) cp1250_czech_cs YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('location'),('loberge'),('lotre'),('boabab');
|
||||
SELECT c1 as want3results from t1 where c1 like 'l%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want3results from t1 where c1 like 'lo%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want1result from t1 where c1 like 'loc%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'loca%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locat%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locati%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locatio%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'location%';
|
||||
want1result
|
||||
location
|
||||
DROP TABLE t1;
|
||||
create table t1 (a set('a') not null);
|
||||
insert into t1 values (),();
|
||||
Warnings:
|
||||
Warning 1364 Field 'a' doesn't have a default value
|
||||
select cast(a as char(1)) from t1;
|
||||
cast(a as char(1))
|
||||
|
||||
|
||||
select a sounds like a from t1;
|
||||
a sounds like a
|
||||
1
|
||||
1
|
||||
select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) collate cp1250_czech_cs default NULL,
|
||||
`level` smallint(5) unsigned default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
CREATE TABLE t1 (a char(16)) character set cp1250 collate cp1250_czech_cs;
|
||||
INSERT INTO t1 VALUES ('');
|
||||
SELECT a, length(a), a='', a=' ', a=' ' FROM t1;
|
||||
|
@ -6,6 +6,8 @@ SET @test_character_set= 'cp932';
|
||||
SET @test_collation= 'cp932_japanese_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
@ -72,10 +74,27 @@ select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) default NULL,
|
||||
`level` smallint(5) unsigned default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=cp932
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
set names cp932;
|
||||
set character_set_database = cp932;
|
||||
CREATE TABLE t1(c1 CHAR(1)) DEFAULT CHARACTER SET = cp932;
|
||||
@ -11399,6 +11418,23 @@ cp932_japanese_ci 6109
|
||||
cp932_japanese_ci 61
|
||||
cp932_japanese_ci 6120
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET collation_connection='cp932_bin';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
delete from t1;
|
||||
@ -11409,6 +11445,23 @@ cp932_bin 6109
|
||||
cp932_bin 61
|
||||
cp932_bin 6120
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
create table t2 (a char(1));
|
||||
insert into t2 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
|
||||
insert into t2 values ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
|
||||
|
@ -40,6 +40,6 @@ IN ind DECIMAL(10,2))
|
||||
BEGIN
|
||||
INSERT INTO t4 VALUES (ins1, ins2, ind);
|
||||
END
|
||||
master-bin.000001 776 Query 1 995 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172), NAME_CONST('ins2',_cp932 0xED40ED41ED42), NAME_CONST('ind',47.93))
|
||||
master-bin.000001 995 Query 1 1084 use `test`; DROP PROCEDURE bug18293
|
||||
master-bin.000001 1084 Query 1 1163 use `test`; DROP TABLE t4
|
||||
master-bin.000001 776 Query 1 987 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172), NAME_CONST('ins2',_cp932 0xED40ED41ED42), NAME_CONST('ind',47.93))
|
||||
master-bin.000001 987 Query 1 1076 use `test`; DROP PROCEDURE bug18293
|
||||
master-bin.000001 1076 Query 1 1155 use `test`; DROP TABLE t4
|
||||
|
@ -9809,6 +9809,23 @@ eucjpms_japanese_ci 6109
|
||||
eucjpms_japanese_ci 61
|
||||
eucjpms_japanese_ci 6120
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET collation_connection='eucjpms_bin';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
delete from t1;
|
||||
@ -9819,6 +9836,23 @@ eucjpms_bin 6109
|
||||
eucjpms_bin 61
|
||||
eucjpms_bin 6120
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
select hex(convert(_eucjpms 0xA5FE41 using ucs2));
|
||||
hex(convert(_eucjpms 0xA5FE41 using ucs2))
|
||||
003F0041
|
||||
|
@ -3,6 +3,8 @@ SET @test_character_set= 'euckr';
|
||||
SET @test_collation= 'euckr_korean_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
@ -69,10 +71,27 @@ select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) default NULL,
|
||||
`level` smallint(5) unsigned default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=euckr
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
SET NAMES euckr;
|
||||
SET collation_connection='euckr_korean_ci';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
@ -124,6 +143,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET collation_connection='euckr_bin';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
delete from t1;
|
||||
@ -174,6 +210,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET NAMES euckr;
|
||||
CREATE TABLE t1 (a text) character set euckr;
|
||||
INSERT INTO t1 VALUES (0xA2E6),(0xFEF7);
|
||||
|
@ -3,6 +3,8 @@ SET @test_character_set= 'gb2312';
|
||||
SET @test_collation= 'gb2312_chinese_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
@ -69,10 +71,27 @@ select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) default NULL,
|
||||
`level` smallint(5) unsigned default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=gb2312
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
SET NAMES gb2312;
|
||||
SET collation_connection='gb2312_chinese_ci';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
@ -124,6 +143,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET collation_connection='gb2312_bin';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
delete from t1;
|
||||
@ -174,6 +210,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET NAMES gb2312;
|
||||
CREATE TABLE t1 (a text) character set gb2312;
|
||||
INSERT INTO t1 VALUES (0xA2A1),(0xD7FE);
|
||||
|
@ -3,6 +3,8 @@ SET @test_character_set= 'gbk';
|
||||
SET @test_collation= 'gbk_chinese_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
@ -69,10 +71,27 @@ select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) default NULL,
|
||||
`level` smallint(5) unsigned default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=gbk
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
SET NAMES gbk;
|
||||
SET collation_connection='gbk_chinese_ci';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
@ -124,6 +143,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET collation_connection='gbk_bin';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
delete from t1;
|
||||
@ -174,6 +210,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET NAMES gbk;
|
||||
CREATE TABLE t1 (a text) character set gbk;
|
||||
INSERT INTO t1 VALUES (0xA3A0),(0xA1A1);
|
||||
|
@ -121,6 +121,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET collation_connection='sjis_bin';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
delete from t1;
|
||||
@ -171,6 +188,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET NAMES sjis;
|
||||
SELECT HEX('佐淘 圭') FROM DUAL;
|
||||
HEX('佐淘 圭')
|
||||
|
@ -2538,6 +2538,8 @@ SET @test_character_set= 'utf8';
|
||||
SET @test_collation= 'utf8_swedish_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
@ -2604,10 +2606,27 @@ select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) collate utf8_swedish_ci default NULL,
|
||||
`level` smallint(5) unsigned default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
create table t1 (a varchar(1)) character set utf8 collate utf8_estonian_ci;
|
||||
insert into t1 values ('A'),('B'),('C'),('a'),('b'),('c');
|
||||
select a, a regexp '[a]' from t1 order by binary a;
|
||||
@ -2815,5 +2834,22 @@ NULL
|
||||
NULL
|
||||
NULL
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F20025
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
set names utf8;
|
||||
End for 5.0 tests
|
||||
|
@ -1,4 +1,97 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
SET @test_character_set= 'ucs2';
|
||||
SET @test_collation= 'ucs2_general_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
USE d1;
|
||||
CREATE TABLE t1 (c CHAR(10), KEY(c));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c char(10) ucs2_general_ci YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('aaa'),('aaaa'),('aaaaa');
|
||||
SELECT c as want3results FROM t1 WHERE c LIKE 'aaa%';
|
||||
want3results
|
||||
aaa
|
||||
aaaa
|
||||
aaaaa
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 varchar(15), KEY c1 (c1(2)));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c1 varchar(15) ucs2_general_ci YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('location'),('loberge'),('lotre'),('boabab');
|
||||
SELECT c1 as want3results from t1 where c1 like 'l%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want3results from t1 where c1 like 'lo%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want1result from t1 where c1 like 'loc%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'loca%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locat%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locati%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locatio%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'location%';
|
||||
want1result
|
||||
location
|
||||
DROP TABLE t1;
|
||||
create table t1 (a set('a') not null);
|
||||
insert into t1 values (),();
|
||||
Warnings:
|
||||
Warning 1364 Field 'a' doesn't have a default value
|
||||
select cast(a as char(1)) from t1;
|
||||
cast(a as char(1))
|
||||
|
||||
|
||||
select a sounds like a from t1;
|
||||
a sounds like a
|
||||
1
|
||||
1
|
||||
select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) default NULL,
|
||||
`level` smallint(5) unsigned default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=ucs2
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
SET NAMES latin1;
|
||||
SET character_set_connection=ucs2;
|
||||
select 'a' = 'a', 'a' = 'a ', 'a ' = 'a';
|
||||
@ -613,6 +706,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F20025
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET NAMES latin1;
|
||||
SET collation_connection='ucs2_bin';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
@ -642,6 +752,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F20025
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
select hex(substr(_ucs2 0x00e400e50068,1));
|
||||
hex(substr(_ucs2 0x00e400e50068,1))
|
||||
00E400E50068
|
||||
|
@ -21,4 +21,14 @@ INSERT INTO t1 VALUES('A', 'A'), ('B', 'B'), ('C', 'C');
|
||||
INSERT INTO t1 VALUES('A ', 'A ');
|
||||
ERROR 23000: Duplicate entry '' for key 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 CHAR(255) CHARACTER SET UCS2 COLLATE UCS2_BIN NOT NULL,
|
||||
KEY(c1)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('marshall\'s');
|
||||
INSERT INTO t1 VALUES ('marsh');
|
||||
CHECK TABLE t1 EXTENDED;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
@ -2257,6 +2257,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
SET collation_connection='ujis_bin';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
delete from t1;
|
||||
@ -2307,6 +2324,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
|
||||
c2h
|
||||
ab_def
|
||||
drop table t1;
|
||||
CREATE TABLE t1 AS
|
||||
SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
|
||||
INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
|
||||
INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
|
||||
INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
|
||||
INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
|
||||
SELECT hex(concat(repeat(0xF1F2, 10), '%'));
|
||||
hex(concat(repeat(0xF1F2, 10), '%'))
|
||||
F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
|
||||
3 rows expected
|
||||
SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
|
||||
a hex(b) c
|
||||
2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
|
||||
DROP TABLE t1;
|
||||
select hex(convert(_ujis 0xA5FE41 using ucs2));
|
||||
hex(convert(_ujis 0xA5FE41 using ucs2))
|
||||
003F0041
|
||||
|
@ -2045,6 +2045,32 @@ select 1 from t1 order by a;
|
||||
drop table t1;
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
CREATE TABLE t1 (a INT, b INT, KEY(a,b));
|
||||
INSERT INTO t1 VALUES(NULL,1),(1,NULL),(NULL,NULL),(1,1),(2,2);
|
||||
CREATE TABLE t1 (a INT, b INT, KEY(a,b)) ENGINE=federated
|
||||
CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/test/t1';
|
||||
SELECT * FROM t1 WHERE a IS NULL;
|
||||
a b
|
||||
NULL NULL
|
||||
NULL 1
|
||||
SELECT * FROM t1 WHERE a IS NOT NULL;
|
||||
a b
|
||||
1 NULL
|
||||
1 1
|
||||
2 2
|
||||
SELECT * FROM t1 WHERE a=1 AND b=1;
|
||||
a b
|
||||
1 1
|
||||
SELECT * FROM t1 WHERE a IS NULL AND b=1;
|
||||
a b
|
||||
NULL 1
|
||||
SELECT * FROM t1 WHERE a IS NOT NULL AND b=1;
|
||||
a b
|
||||
1 1
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT) ENGINE=federated CONNECTION='mysql://@:://';
|
||||
DROP TABLE t1;
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
DROP DATABASE IF EXISTS federated;
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
|
@ -931,4 +931,19 @@ SELECT GROUP_CONCAT(DISTINCT b, a ORDER BY b) FROM t1;
|
||||
GROUP_CONCAT(DISTINCT b, a ORDER BY b)
|
||||
11,22,32
|
||||
DROP TABLE t1, t2, t3;
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (),();
|
||||
SELECT s1.d1 FROM
|
||||
(
|
||||
SELECT
|
||||
t1.a as d1,
|
||||
GROUP_CONCAT(DISTINCT t1.a) AS d2
|
||||
FROM
|
||||
t1 AS t1,
|
||||
t1 AS t2
|
||||
GROUP BY 1
|
||||
) AS s1;
|
||||
d1
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
@ -207,6 +207,25 @@ test
|
||||
SELECT NAME_CONST('test', 'test');
|
||||
test
|
||||
test
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
SELECT NAME_CONST('flag',1) * MAX(a) FROM t1;
|
||||
NAME_CONST('flag',1) * MAX(a)
|
||||
3
|
||||
SELECT NAME_CONST('flag',1.5) * MAX(a) FROM t1;
|
||||
NAME_CONST('flag',1.5) * MAX(a)
|
||||
4.5
|
||||
SELECT NAME_CONST('flag',-1) * MAX(a) FROM t1;
|
||||
NAME_CONST('flag',-1) * MAX(a)
|
||||
-3
|
||||
SELECT NAME_CONST('flag',-1.5) * MAX(a) FROM t1;
|
||||
NAME_CONST('flag',-1.5) * MAX(a)
|
||||
-4.5
|
||||
SELECT NAME_CONST('flag', SQRT(4)) * MAX(a) FROM t1;
|
||||
ERROR HY000: Incorrect arguments to NAME_CONST
|
||||
SELECT NAME_CONST('flag',-SQRT(4)) * MAX(a) FROM t1;
|
||||
ERROR HY000: Incorrect arguments to NAME_CONST
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (5), (2);
|
||||
SELECT NAME_CONST(x,2) FROM (SELECT a x FROM t1) t;
|
||||
@ -225,4 +244,7 @@ select min(a) from t1 group by inet_ntoa(a);
|
||||
min(a)
|
||||
-2
|
||||
drop table t1;
|
||||
SELECT NAME_CONST('var', 'value') COLLATE latin1_general_cs;
|
||||
NAME_CONST('var', 'value') COLLATE latin1_general_cs
|
||||
value
|
||||
End of 5.0 tests
|
||||
|
@ -666,6 +666,8 @@ timestampadd(SQL_TSI_SECOND, 1, date)
|
||||
select timestampadd(SQL_TSI_FRAC_SECOND, 1, date) from t1;
|
||||
timestampadd(SQL_TSI_FRAC_SECOND, 1, date)
|
||||
2003-01-02 00:00:00.000001
|
||||
Warnings:
|
||||
Warning 1287 'FRAC_SECOND' is deprecated; use 'MICROSECOND' instead
|
||||
select timestampdiff(MONTH, '2001-02-01', '2001-05-01') as a;
|
||||
a
|
||||
3
|
||||
@ -699,6 +701,8 @@ a
|
||||
select timestampdiff(SQL_TSI_FRAC_SECOND, '2001-02-01 12:59:59.120000', '2001-05-01 12:58:58.119999') as a;
|
||||
a
|
||||
7689538999999
|
||||
Warnings:
|
||||
Warning 1287 'FRAC_SECOND' is deprecated; use 'MICROSECOND' instead
|
||||
select timestampdiff(SQL_TSI_DAY, '1986-02-01', '1986-03-01') as a1,
|
||||
timestampdiff(SQL_TSI_DAY, '1900-02-01', '1900-03-01') as a2,
|
||||
timestampdiff(SQL_TSI_DAY, '1996-02-01', '1996-03-01') as a3,
|
||||
@ -1069,6 +1073,7 @@ timestampdiff(SQL_TSI_FRAC_SECOND, '2001-02-01 12:59:59.120000', '2001-05-01 12:
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Warning 1287 'FRAC_SECOND' is deprecated; use 'MICROSECOND' instead
|
||||
Note 1003 select timestampdiff(WEEK,_latin1'2001-02-01',_latin1'2001-05-01') AS `a1`,timestampdiff(SECOND_FRAC,_latin1'2001-02-01 12:59:59.120000',_latin1'2001-05-01 12:58:58.119999') AS `a2`
|
||||
select last_day('2005-00-00');
|
||||
last_day('2005-00-00')
|
||||
@ -1285,4 +1290,22 @@ DATE_ADD(20071108, INTERVAL 1 DAY)
|
||||
select LAST_DAY('2007-12-06 08:59:19.05') - INTERVAL 1 SECOND;
|
||||
LAST_DAY('2007-12-06 08:59:19.05') - INTERVAL 1 SECOND
|
||||
2007-12-30 23:59:59
|
||||
SELECT TIMESTAMPADD(FRAC_SECOND, 1, '2008-02-18');
|
||||
TIMESTAMPADD(FRAC_SECOND, 1, '2008-02-18')
|
||||
2008-02-18 00:00:00.000001
|
||||
Warnings:
|
||||
Warning 1287 'FRAC_SECOND' is deprecated; use 'MICROSECOND' instead
|
||||
SELECT TIMESTAMPDIFF(FRAC_SECOND, '2008-02-17', '2008-02-18');
|
||||
TIMESTAMPDIFF(FRAC_SECOND, '2008-02-17', '2008-02-18')
|
||||
86400000000
|
||||
Warnings:
|
||||
Warning 1287 'FRAC_SECOND' is deprecated; use 'MICROSECOND' instead
|
||||
SELECT DATE_ADD('2008-02-18', INTERVAL 1 FRAC_SECOND);
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FRAC_SECOND)' at line 1
|
||||
SELECT DATE_SUB('2008-02-18', INTERVAL 1 FRAC_SECOND);
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FRAC_SECOND)' at line 1
|
||||
SELECT '2008-02-18' + INTERVAL 1 FRAC_SECOND;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FRAC_SECOND' at line 1
|
||||
SELECT '2008-02-18' - INTERVAL 1 FRAC_SECOND;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FRAC_SECOND' at line 1
|
||||
End of 5.0 tests
|
||||
|
@ -138,3 +138,20 @@ SELECT user, host, db, select_priv FROM mysql.db where user = 'CUser2' order by
|
||||
user host db select_priv
|
||||
DROP USER CUser2@localhost;
|
||||
DROP USER CUser2@LOCALHOST;
|
||||
CREATE DATABASE mysqltest_1;
|
||||
CREATE TABLE mysqltest_1.t1 (a INT);
|
||||
CREATE USER 'mysqltest1'@'%';
|
||||
GRANT SELECT, UPDATE ON `mysqltest_1`.* TO 'mysqltest1'@'%';
|
||||
REVOKE SELECT ON `mysqltest_1`.* FROM 'mysqltest1'@'%';
|
||||
GRANT SELECT, UPDATE ON `mysqltest\_1`.* TO 'mysqltest1'@'%';
|
||||
FLUSH PRIVILEGES;
|
||||
SHOW GRANTS;
|
||||
Grants for mysqltest1@%
|
||||
GRANT USAGE ON *.* TO 'mysqltest1'@'%'
|
||||
GRANT SELECT, UPDATE ON `mysqltest\_1`.* TO 'mysqltest1'@'%'
|
||||
GRANT UPDATE ON `mysqltest_1`.* TO 'mysqltest1'@'%'
|
||||
SELECT * FROM mysqltest_1.t1;
|
||||
a
|
||||
DROP USER 'mysqltest1'@'%';
|
||||
DROP DATABASE mysqltest_1;
|
||||
End of 5.0 tests
|
||||
|
@ -256,6 +256,7 @@ set @a=repeat(' ',20);
|
||||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'v' at row 1
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||
concat('*',v,'*',c,'*',t,'*')
|
||||
*+ *+*+ *
|
||||
|
@ -1901,6 +1901,7 @@ set @a=repeat(' ',20);
|
||||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'v' at row 1
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||
concat('*',v,'*',c,'*',t,'*')
|
||||
*+ *+*+ *
|
||||
|
@ -1240,4 +1240,10 @@ t1 CREATE TABLE `t1` (
|
||||
UNIQUE KEY `aa` (`a`(1))
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
set @my_innodb_autoextend_increment=@@global.innodb_autoextend_increment;
|
||||
set global innodb_autoextend_increment=8;
|
||||
set global innodb_autoextend_increment=@my_innodb_autoextend_increment;
|
||||
set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency;
|
||||
set global innodb_commit_concurrency=0;
|
||||
set global innodb_commit_concurrency=@my_innodb_commit_concurrency;
|
||||
End of 5.0 tests
|
||||
|
@ -94,6 +94,9 @@ drop table t1;
|
||||
prepare s from "select 1 limit ?";
|
||||
set @a='qwe';
|
||||
execute s using @a;
|
||||
1
|
||||
set @a=-1;
|
||||
execute s using @a;
|
||||
ERROR HY000: Incorrect arguments to EXECUTE
|
||||
prepare s from "select 1 limit 1, ?";
|
||||
execute s using @a;
|
||||
@ -101,4 +104,10 @@ ERROR HY000: Incorrect arguments to EXECUTE
|
||||
prepare s from "select 1 limit ?, ?";
|
||||
execute s using @a, @a;
|
||||
ERROR HY000: Incorrect arguments to EXECUTE
|
||||
set @a=14632475938453979136;
|
||||
execute s using @a, @a;
|
||||
1
|
||||
set @a=-14632475938453979136;
|
||||
execute s using @a, @a;
|
||||
ERROR HY000: Incorrect arguments to EXECUTE
|
||||
End of 5.0 tests
|
||||
|
@ -918,4 +918,26 @@ id ref
|
||||
3 2
|
||||
4 5
|
||||
DROP TABLE t1, t2, t3;
|
||||
CREATE TABLE t1(a INT);
|
||||
CREATE TABLE m1(a INT) ENGINE=MERGE;
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TABLE `m1` (
|
||||
`a` int(11) default NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE m1;
|
||||
CREATE TABLE m1(a INT) ENGINE=MERGE UNION=();
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TABLE `m1` (
|
||||
`a` int(11) default NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1
|
||||
ALTER TABLE m1 UNION=(t1);
|
||||
ALTER TABLE m1 UNION=();
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TABLE `m1` (
|
||||
`a` int(11) default NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1, m1;
|
||||
End of 5.0 tests
|
||||
|
@ -447,7 +447,7 @@ UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */;
|
||||
ERROR 23000: Duplicate entry '2' for key 1
|
||||
show master status /* the offset must denote there is the query */;
|
||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||
master-bin.000001 369
|
||||
master-bin.000001 230
|
||||
select count(*) from t1 /* must be 4 */;
|
||||
count(*)
|
||||
4
|
||||
|
@ -545,7 +545,7 @@ a b
|
||||
4 4
|
||||
show master status /* there must be the UPDATE query event */;
|
||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||
master-bin.000001 328
|
||||
master-bin.000001 189
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
insert into t1 values (1,2),(3,4),(4,4);
|
||||
@ -555,7 +555,7 @@ UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a;
|
||||
ERROR 23000: Duplicate entry '4' for key 1
|
||||
show master status /* there must be the UPDATE query event */;
|
||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||
master-bin.000001 343
|
||||
master-bin.000001 204
|
||||
drop table t1, t2;
|
||||
drop table if exists t1, t2, t3;
|
||||
CREATE TABLE t1 (a int, PRIMARY KEY (a));
|
||||
|
@ -1104,6 +1104,7 @@ set @a=repeat(' ',20);
|
||||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'v' at row 1
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||
concat('*',v,'*',c,'*',t,'*')
|
||||
*+ *+*+ *
|
||||
|
1
mysql-test/r/mysqldump-no-binlog.result
Normal file
1
mysql-test/r/mysqldump-no-binlog.result
Normal file
@ -0,0 +1 @@
|
||||
mysqldump: Error: Binlogging on server not active
|
@ -3306,7 +3306,7 @@ grant RELOAD on *.* to mysqltest_1@localhost;
|
||||
mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation (1227)
|
||||
mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation (1227)
|
||||
grant REPLICATION CLIENT on *.* to mysqltest_1@localhost;
|
||||
CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=537;
|
||||
CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=#;
|
||||
SET @saved_cs_client = @@character_set_client;
|
||||
SET character_set_client = utf8;
|
||||
CREATE TABLE `t1` (
|
||||
|
@ -429,3 +429,21 @@ Handler_read_prev 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_next 5
|
||||
DROP TABLE t1,t2,t3,t4;
|
||||
CREATE TABLE t1 (
|
||||
a int(11) default NULL,
|
||||
b int(11) default NULL,
|
||||
KEY a (a,b)
|
||||
);
|
||||
INSERT INTO t1 VALUES (0,10),(0,11),(0,12);
|
||||
CREATE TABLE t2 (
|
||||
a int(11) default NULL,
|
||||
b int(11) default NULL,
|
||||
KEY a (a)
|
||||
);
|
||||
INSERT INTO t2 VALUES (3,NULL),(3,11),(3,12);
|
||||
SELECT * FROM t2 inner join t1 WHERE ( t1.a = 0 OR t1.a IS NULL) AND t2.a = 3 AND t2.b = t1.b;
|
||||
a b a b
|
||||
3 11 0 11
|
||||
3 12 0 12
|
||||
drop table t1, t2;
|
||||
End of 5.0 tests
|
||||
|
@ -1064,3 +1064,15 @@ a b
|
||||
10 00:00:10
|
||||
0 00:00:00
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#31590: Wrong error message on sort buffer being too small.
|
||||
#
|
||||
create table t1(a int, b tinytext);
|
||||
insert into t1 values (1,2),(3,2);
|
||||
set session sort_buffer_size= 30000;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect sort_buffer_size value: '30000'
|
||||
set session max_sort_length= 2180;
|
||||
select * from t1 order by b;
|
||||
ERROR HY001: Out of sort memory; increase server sort buffer size
|
||||
drop table t1;
|
||||
|
@ -1709,4 +1709,186 @@ a b
|
||||
9999999999999999 14632475938453979136
|
||||
deallocate prepare stmt;
|
||||
drop table t1;
|
||||
drop view if exists v1;
|
||||
drop table if exists t1;
|
||||
create table t1 (a int, b int);
|
||||
insert into t1 values (1,1), (2,2), (3,3);
|
||||
insert into t1 values (3,1), (1,2), (2,3);
|
||||
prepare stmt from "create view v1 as select * from t1";
|
||||
execute stmt;
|
||||
drop table t1;
|
||||
create table t1 (a int, b int);
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1`
|
||||
drop view v1;
|
||||
prepare stmt from "create view v1 (c,d) as select a,b from t1";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `c`,`t1`.`b` AS `d` from `t1`
|
||||
select * from v1;
|
||||
c d
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `c`,`t1`.`b` AS `d` from `t1`
|
||||
select * from v1;
|
||||
c d
|
||||
drop view v1;
|
||||
prepare stmt from "create view v1 (c) as select b+1 from t1";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select (`t1`.`b` + 1) AS `c` from `t1`
|
||||
select * from v1;
|
||||
c
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select (`t1`.`b` + 1) AS `c` from `t1`
|
||||
select * from v1;
|
||||
c
|
||||
drop view v1;
|
||||
prepare stmt from "create view v1 (c,d,e,f) as select a,b,a in (select a+2 from t1), a = all (select a from t1) from t1";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `c`,`t1`.`b` AS `d`,`t1`.`a` in (select (`t1`.`a` + 2) AS `a+2` from `t1`) AS `e`,`t1`.`a` = all (select `t1`.`a` AS `a` from `t1`) AS `f` from `t1`
|
||||
select * from v1;
|
||||
c d e f
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `c`,`t1`.`b` AS `d`,`t1`.`a` in (select (`t1`.`a` + 2) AS `a+2` from `t1`) AS `e`,`t1`.`a` = all (select `t1`.`a` AS `a` from `t1`) AS `f` from `t1`
|
||||
select * from v1;
|
||||
c d e f
|
||||
drop view v1;
|
||||
prepare stmt from "create or replace view v1 as select 1";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1`
|
||||
select * from v1;
|
||||
1
|
||||
1
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1`
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1`
|
||||
select * from v1;
|
||||
1
|
||||
1
|
||||
drop view v1;
|
||||
prepare stmt from "create view v1 as select 1, 1";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1`,1 AS `My_exp_1`
|
||||
select * from v1;
|
||||
1 My_exp_1
|
||||
1 1
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1`,1 AS `My_exp_1`
|
||||
select * from v1;
|
||||
1 My_exp_1
|
||||
1 1
|
||||
drop view v1;
|
||||
prepare stmt from "create view v1 (x) as select a from t1 where a > 1";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `x` from `t1` where (`t1`.`a` > 1)
|
||||
select * from v1;
|
||||
x
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `x` from `t1` where (`t1`.`a` > 1)
|
||||
select * from v1;
|
||||
x
|
||||
drop view v1;
|
||||
prepare stmt from "create view v1 as select * from `t1` `b`";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `b`.`a` AS `a`,`b`.`b` AS `b` from `t1` `b`
|
||||
select * from v1;
|
||||
a b
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `b`.`a` AS `a`,`b`.`b` AS `b` from `t1` `b`
|
||||
select * from v1;
|
||||
a b
|
||||
drop view v1;
|
||||
prepare stmt from "create view v1 (a,b,c) as select * from t1";
|
||||
execute stmt;
|
||||
ERROR HY000: View's SELECT and view's field list have different column counts
|
||||
execute stmt;
|
||||
ERROR HY000: View's SELECT and view's field list have different column counts
|
||||
deallocate prepare stmt;
|
||||
drop table t1;
|
||||
create temporary table t1 (a int, b int);
|
||||
prepare stmt from "create view v1 as select * from t1";
|
||||
execute stmt;
|
||||
ERROR HY000: View's SELECT refers to a temporary table 't1'
|
||||
execute stmt;
|
||||
ERROR HY000: View's SELECT refers to a temporary table 't1'
|
||||
deallocate prepare stmt;
|
||||
drop table t1;
|
||||
prepare stmt from "create view v1 as select * from t1";
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
prepare stmt from "create view v1 as select * from `t1` `b`";
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
prepare stmt from "select ?";
|
||||
set @arg= 123456789.987654321;
|
||||
select @arg;
|
||||
@arg
|
||||
123456789.987654321
|
||||
execute stmt using @arg;
|
||||
?
|
||||
123456789.987654321
|
||||
set @arg= "string";
|
||||
select @arg;
|
||||
@arg
|
||||
string
|
||||
execute stmt using @arg;
|
||||
?
|
||||
string
|
||||
set @arg= 123456;
|
||||
select @arg;
|
||||
@arg
|
||||
123456
|
||||
execute stmt using @arg;
|
||||
?
|
||||
123456
|
||||
set @arg= cast(-12345.54321 as decimal(20, 10));
|
||||
select @arg;
|
||||
@arg
|
||||
-12345.5432100000
|
||||
execute stmt using @arg;
|
||||
?
|
||||
-12345.5432100000
|
||||
deallocate prepare stmt;
|
||||
End of 5.0 tests.
|
||||
|
@ -1654,3 +1654,30 @@ set GLOBAL query_cache_type=default;
|
||||
set GLOBAL query_cache_limit=default;
|
||||
set GLOBAL query_cache_min_res_unit=default;
|
||||
set GLOBAL query_cache_size=default;
|
||||
use test;
|
||||
FLUSH STATUS;
|
||||
SET GLOBAL query_cache_size=10*1024*1024;
|
||||
SET @save_concurrent_insert= @@concurrent_insert;
|
||||
SET GLOBAL concurrent_insert= 0;
|
||||
CREATE TABLE t1 (c1 INT NOT NULL) ENGINE=MyISAM;
|
||||
INSERT INTO t1 (c1) VALUES (1), (2);
|
||||
SHOW GLOBAL VARIABLES LIKE 'concurrent_insert';
|
||||
Variable_name Value
|
||||
concurrent_insert 0
|
||||
SHOW STATUS LIKE 'Qcache_hits';
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
1
|
||||
2
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
1
|
||||
2
|
||||
SHOW STATUS LIKE 'Qcache_hits';
|
||||
Variable_name Value
|
||||
Qcache_hits 1
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL concurrent_insert= @save_concurrent_insert;
|
||||
SET GLOBAL query_cache_size= default;
|
||||
|
@ -1153,3 +1153,16 @@ explain select * from t1 where dateval >= '2007-01-01 00:00:00' and dateval <= '
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range dateval dateval 4 NULL 2 Using where
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
a varchar(32), index (a)
|
||||
) DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
|
||||
INSERT INTO t1 VALUES
|
||||
('B'), ('A'), ('A'), ('C'), ('B'), ('A'), ('A');
|
||||
SELECT a FROM t1 WHERE a='b' OR a='B';
|
||||
a
|
||||
B
|
||||
B
|
||||
EXPLAIN SELECT a FROM t1 WHERE a='b' OR a='B';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range a a 35 NULL 3 Using where; Using index
|
||||
DROP TABLE t1;
|
||||
|
@ -434,3 +434,12 @@ SELECT @x;
|
||||
@x
|
||||
99
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
INSERT INTO t1 VALUES (1,1);
|
||||
SELECT ROW(a, 1) IN (SELECT SUM(b), 1) FROM t1 GROUP BY a;
|
||||
ROW(a, 1) IN (SELECT SUM(b), 1)
|
||||
1
|
||||
SELECT ROW(a, 1) IN (SELECT SUM(b), 3) FROM t1 GROUP BY a;
|
||||
ROW(a, 1) IN (SELECT SUM(b), 3)
|
||||
0
|
||||
DROP TABLE t1;
|
||||
|
38
mysql-test/r/rpl_bug33931.result
Normal file
38
mysql-test/r/rpl_bug33931.result
Normal file
@ -0,0 +1,38 @@
|
||||
reset master;
|
||||
stop slave;
|
||||
reset slave;
|
||||
start slave;
|
||||
show slave status;
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_PORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File
|
||||
Read_Master_Log_Pos 4
|
||||
Relay_Log_File #
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File
|
||||
Slave_IO_Running No
|
||||
Slave_SQL_Running No
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 0
|
||||
Last_Error
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos 0
|
||||
Relay_Log_Space #
|
||||
Until_Condition None
|
||||
Until_Log_File
|
||||
Until_Log_Pos 0
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
@ -8,15 +8,53 @@ reset master;
|
||||
change master to master_host="127.0.0.1",master_port=SLAVE_PORT,master_user="root";
|
||||
start slave;
|
||||
create table t1 (n int);
|
||||
stop slave;
|
||||
create table t2 (n int);
|
||||
show tables;
|
||||
Tables_in_test
|
||||
t1
|
||||
t2
|
||||
create table t3 (n int) engine=innodb;
|
||||
set @a=1;
|
||||
insert into t3 values(@a);
|
||||
begin;
|
||||
insert into t3 values(2);
|
||||
insert into t3 values(3);
|
||||
commit;
|
||||
insert into t3 values(4);
|
||||
start slave until master_log_file="slave-bin.000001",master_log_pos=195;
|
||||
Warnings:
|
||||
Note 1278 It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart
|
||||
show tables;
|
||||
Tables_in_test
|
||||
t1
|
||||
t2
|
||||
start slave until master_log_file="slave-bin.000001",master_log_pos=438;
|
||||
Warnings:
|
||||
Note 1278 It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart
|
||||
select * from t3;
|
||||
n
|
||||
1
|
||||
start slave until master_log_file="slave-bin.000001",master_log_pos=663;
|
||||
Warnings:
|
||||
Note 1278 It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart
|
||||
select * from t3;
|
||||
n
|
||||
1
|
||||
2
|
||||
3
|
||||
start slave;
|
||||
create table t4 (n int);
|
||||
create table t5 (n int);
|
||||
create table t6 (n int);
|
||||
show tables;
|
||||
Tables_in_test
|
||||
t1
|
||||
t2
|
||||
t3
|
||||
t4
|
||||
t5
|
||||
t6
|
||||
stop slave;
|
||||
reset slave;
|
||||
drop table t1,t4,t5,t6;
|
||||
drop table t1,t2,t3,t4,t5,t6;
|
||||
|
@ -77,7 +77,8 @@ load data infile '../std_data_ln/rpl_loaddata2.dat' into table t2 fields
|
||||
terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
|
||||
'\n##\n' starting by '>' ignore 1 lines;
|
||||
ERROR 23000: Duplicate entry '2003-03-22' for key 1
|
||||
drop table t2;
|
||||
set @@global.sql_slave_skip_counter=1;
|
||||
start slave;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (word CHAR(20) NOT NULL PRIMARY KEY) ENGINE=INNODB;
|
||||
|
@ -16,3 +16,9 @@ select master_pos_wait('master-bin.999999',0);
|
||||
stop slave sql_thread;
|
||||
master_pos_wait('master-bin.999999',0)
|
||||
NULL
|
||||
"*** must be empty ***"
|
||||
show slave status;
|
||||
"*** must be NULL ***"
|
||||
select master_pos_wait('foo', 98);
|
||||
master_pos_wait('foo', 98)
|
||||
NULL
|
||||
|
@ -53,3 +53,4 @@ Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master NULL
|
||||
drop table t1;
|
||||
drop table t1;
|
||||
|
@ -290,6 +290,22 @@ select * from t1;
|
||||
a b
|
||||
2 1
|
||||
drop table t1;
|
||||
create table t1(a int);
|
||||
insert into t1 values (1),(2);
|
||||
prepare s1 from 'insert into t1 select a from t1 limit ?';
|
||||
set @x='1.1';
|
||||
execute s1 using @x;
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
1
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
1
|
||||
drop table t1;
|
||||
End of 5.0 tests.
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
DROP FUNCTION IF EXISTS f2;
|
||||
|
@ -4328,4 +4328,31 @@ SELECT * FROM t1 WHERE c1 > NULL + 1;
|
||||
c1
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (a VARCHAR(10) NOT NULL PRIMARY KEY);
|
||||
INSERT INTO t1 (a) VALUES ('foo0'), ('bar0'), ('baz0');
|
||||
SELECT * FROM t1 WHERE a IN (CONCAT('foo', 0), 'bar');
|
||||
a
|
||||
foo0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
CREATE TABLE t2 (a INT, c INT, KEY(a));
|
||||
INSERT INTO t1 VALUES (1, 1), (2, 2);
|
||||
INSERT INTO t2 VALUES (1, 1), (1, 2), (1, 3), (1, 4), (1, 5),
|
||||
(2, 1), (2, 2), (2, 3), (2, 4), (2, 5),
|
||||
(3, 1), (3, 2), (3, 3), (3, 4), (3, 5),
|
||||
(4, 1), (4, 2), (4, 3), (4, 4), (4, 5);
|
||||
FLUSH STATUS;
|
||||
SELECT DISTINCT b FROM t1 LEFT JOIN t2 USING(a) WHERE c <= 3;
|
||||
b
|
||||
1
|
||||
2
|
||||
SHOW STATUS LIKE 'Handler_read%';
|
||||
Variable_name Value
|
||||
Handler_read_first 0
|
||||
Handler_read_key 2
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_next 6
|
||||
DROP TABLE t1, t2;
|
||||
End of 5.0 tests
|
||||
|
@ -6629,6 +6629,23 @@ end//
|
||||
call proc_33618(20);
|
||||
drop table t_33618;
|
||||
drop procedure proc_33618;
|
||||
#
|
||||
# Bug#30787: Stored function ignores user defined alias.
|
||||
#
|
||||
use test;
|
||||
drop function if exists func30787;
|
||||
create table t1(f1 int);
|
||||
insert into t1 values(1),(2);
|
||||
create function func30787(p1 int) returns int
|
||||
begin
|
||||
return p1;
|
||||
end |
|
||||
select (select func30787(f1)) as ttt from t1;
|
||||
ttt
|
||||
1
|
||||
2
|
||||
drop function func30787;
|
||||
drop table t1;
|
||||
# ------------------------------------------------------------------
|
||||
# -- End of 5.0 tests
|
||||
# ------------------------------------------------------------------
|
||||
|
@ -934,6 +934,8 @@ NULL NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (col1 CHAR(5), col2 VARCHAR(6));
|
||||
INSERT INTO t1 VALUES ('hello', 'hello'),('he', 'he'),('hello ', 'hello ');
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'col1' at row 3
|
||||
INSERT INTO t1 (col1) VALUES ('hellobob');
|
||||
ERROR 22001: Data too long for column 'col1' at row 1
|
||||
INSERT INTO t1 (col2) VALUES ('hellobob');
|
||||
|
@ -4147,103 +4147,37 @@ DROP TABLE t1,t2;
|
||||
create table t1(a int,b int,key(a),key(b));
|
||||
insert into t1(a,b) values (1,2),(2,1),(2,3),(3,4),(5,4),(5,5),
|
||||
(6,7),(7,4),(5,3);
|
||||
select sum(a),a from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1
|
||||
)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1)
|
||||
group by a;
|
||||
sum(a) a
|
||||
select sum(a),a from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1)
|
||||
group by a;
|
||||
ERROR HY000: Thread stack overrun detected
|
||||
explain select sum(a),a from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1
|
||||
)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1)
|
||||
group by a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index a a 5 NULL 9 Using where; Using index
|
||||
2 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||
3 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||
4 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||
5 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||
6 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||
7 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||
8 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||
9 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||
10 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||
11 SUBQUERY t1 range a a 5 NULL 9 Using where; Using temporary; Using filesort
|
||||
12 SUBQUERY t1 range a a 5 NULL 1 Using where; Using temporary; Using filesort
|
||||
13 SUBQUERY t1 index NULL a 5 NULL 9 Using index
|
||||
explain select sum(a),a from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1)
|
||||
group by a;
|
||||
ERROR HY000: Thread stack overrun detected
|
||||
5
|
||||
4
|
||||
3
|
||||
2
|
||||
1
|
||||
26
|
||||
25
|
||||
24
|
||||
23
|
||||
22
|
||||
21
|
||||
20
|
||||
19
|
||||
18
|
||||
17
|
||||
16
|
||||
15
|
||||
14
|
||||
13
|
||||
12
|
||||
11
|
||||
10
|
||||
9
|
||||
8
|
||||
7
|
||||
6
|
||||
5
|
||||
4
|
||||
3
|
||||
2
|
||||
1
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a1 INT, a2 INT);
|
||||
CREATE TABLE t2 (b1 INT, b2 INT);
|
||||
|
@ -100,23 +100,15 @@ t1 CREATE TABLE `t1` (
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
CREATE TABLE t1(a INT)
|
||||
DATA DIRECTORY='TEST_DIR/master-data/mysql'
|
||||
INDEX DIRECTORY='TEST_DIR/master-data/mysql';
|
||||
RENAME TABLE t1 TO user;
|
||||
ERROR HY000: Can't create/write to file 'TEST_DIR/master-data/mysql/user.MYI' (Errcode: 17)
|
||||
DROP TABLE t1;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`i` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`i` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
DATA DIRECTORY='TEST_DIR/tmp'
|
||||
INDEX DIRECTORY='TEST_DIR/tmp';
|
||||
ERROR HY000: Can't create/write to file 'TEST_DIR/tmp/t1.MYI' (Errcode: 17)
|
||||
CREATE TABLE t2(a INT)
|
||||
DATA DIRECTORY='TEST_DIR/tmp'
|
||||
INDEX DIRECTORY='TEST_DIR/tmp';
|
||||
RENAME TABLE t2 TO t1;
|
||||
ERROR HY000: Can't create/write to file 'TEST_DIR/tmp/t1.MYI' (Errcode: 17)
|
||||
DROP TABLE t2;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TEMPORARY TABLE `t1` (
|
||||
@ -138,27 +130,38 @@ select * from t1;
|
||||
a
|
||||
42
|
||||
drop table t1;
|
||||
execute stmt;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c` char(10) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/tmp/'
|
||||
drop table t1;
|
||||
execute stmt;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c` char(10) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/tmp/'
|
||||
drop table t1;
|
||||
deallocate prepare stmt;
|
||||
CREATE TABLE t1(a INT)
|
||||
DATA DIRECTORY='TEST_DIR/var/master-data/test';
|
||||
Got one of the listed errors
|
||||
CREATE TABLE t1(a INT)
|
||||
DATA DIRECTORY='TEST_DIR/var/master-data/';
|
||||
Got one of the listed errors
|
||||
CREATE TABLE t1(a INT)
|
||||
INDEX DIRECTORY='TEST_DIR/var/master-data';
|
||||
Got one of the listed errors
|
||||
CREATE TABLE t1(a INT)
|
||||
INDEX DIRECTORY='TEST_DIR/var/master-data_var';
|
||||
Got one of the listed errors
|
||||
End of 4.1 tests
|
||||
CREATE DATABASE db1;
|
||||
CREATE DATABASE db2;
|
||||
USE db2;
|
||||
INSERT INTO db2.t1 VALUES (1);
|
||||
SELECT * FROM db2.t1;
|
||||
b
|
||||
1
|
||||
RESET QUERY CACHE;
|
||||
USE db1;
|
||||
SET SESSION keep_files_on_create = TRUE;
|
||||
CREATE TABLE t1 (a INT) ENGINE MYISAM;
|
||||
ERROR HY000: Can't create/write to file './db1/t1.MYD' (Errcode: 17)
|
||||
CREATE TABLE t3 (a INT) Engine=MyISAM;
|
||||
INSERT INTO t3 VALUES (1),(2),(3);
|
||||
TRUNCATE TABLE t3;
|
||||
SELECT * from t3;
|
||||
a
|
||||
SET SESSION keep_files_on_create = DEFAULT;
|
||||
DROP TABLE db2.t1, db1.t3;
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
USE test;
|
||||
ERROR HY000: Can't create/write to file './test/t1.MYD' (Errcode: 17)
|
||||
SET SESSION keep_files_on_create = FALSE;
|
||||
CREATE TABLE t1 (a INT) ENGINE MYISAM;
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
@ -46,3 +46,12 @@ CREATE TABLE t2 (a int);
|
||||
lock tables t1 write,t1 as b write, t2 write, t2 as c read;
|
||||
drop table t2,t1;
|
||||
unlock tables;
|
||||
create temporary table t1(f1 int);
|
||||
lock tables t1 write;
|
||||
insert into t1 values (1);
|
||||
show columns from t1;
|
||||
Field Type Null Key Default Extra
|
||||
f1 int(11) YES NULL
|
||||
insert into t1 values(2);
|
||||
drop table t1;
|
||||
unlock tables;
|
||||
|
@ -140,4 +140,23 @@ select * from t3;
|
||||
c
|
||||
1
|
||||
drop table t1, t2, t3;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=innodb;
|
||||
CREATE TABLE t2(b INT, FOREIGN KEY(b) REFERENCES t1(a)) ENGINE=innodb;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
CREATE TRIGGER t1_bd BEFORE DELETE ON t1 FOR EACH ROW SET @a = 1;
|
||||
CREATE TRIGGER t1_ad AFTER DELETE ON t1 FOR EACH ROW SET @b = 1;
|
||||
SET @a = 0;
|
||||
SET @b = 0;
|
||||
TRUNCATE t1;
|
||||
SELECT @a, @b;
|
||||
@a @b
|
||||
0 0
|
||||
INSERT INTO t1 VALUES (1);
|
||||
DELETE FROM t1;
|
||||
SELECT @a, @b;
|
||||
@a @b
|
||||
1 1
|
||||
DROP TABLE t2, t1;
|
||||
End of 5.0 tests
|
||||
|
@ -125,6 +125,7 @@ create table t1 (c char(2), vc varchar(2));
|
||||
insert into t1 values(0x4120, 0x4120);
|
||||
insert into t1 values(0x412020, 0x412020);
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
Note 1265 Data truncated for column 'vc' at row 1
|
||||
drop table t1;
|
||||
set @old_sql_mode= @@sql_mode, sql_mode= 'traditional';
|
||||
|
@ -85,3 +85,12 @@ t1 CREATE TABLE `t1` (
|
||||
`f1` set('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','1') default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
CREATE TABLE t1(c set('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64'));
|
||||
INSERT INTO t1 VALUES(7);
|
||||
INSERT INTO t1 VALUES(9223372036854775808);
|
||||
SELECT * FROM t1;
|
||||
c
|
||||
1,2,3
|
||||
64
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
@ -3618,4 +3618,47 @@ ERROR HY000: Field of view 'test.v1' underlying table doesn't have a default val
|
||||
set @@sql_mode=@old_mode;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
End of 5.0 tests.
|
||||
create table t1 (a int, key(a));
|
||||
create table t2 (c int);
|
||||
create view v1 as select a b from t1;
|
||||
create view v2 as select 1 a from t2, v1 where c in
|
||||
(select 1 from t1 where b = a);
|
||||
insert into t1 values (1), (1);
|
||||
insert into t2 values (1), (1);
|
||||
prepare stmt from "select * from v2 where a = 1";
|
||||
execute stmt;
|
||||
a
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
drop view v1, v2;
|
||||
drop table t1, t2;
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE VIEW v1 AS SELECT p.a AS a FROM t1 p, t1 q;
|
||||
INSERT INTO t1 VALUES (1), (1);
|
||||
SELECT MAX(a), COUNT(DISTINCT a) FROM v1 GROUP BY a;
|
||||
MAX(a) COUNT(DISTINCT a)
|
||||
1 1
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
# -----------------------------------------------------------------
|
||||
# -- Bug#34337: Server crash when Altering a view using a table name.
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
DROP TABLE IF EXISTS t1;
|
||||
|
||||
CREATE TABLE t1(c1 INT);
|
||||
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
ALTER ALGORITHM=TEMPTABLE SQL SECURITY INVOKER VIEW t1 (c2) AS SELECT (1);
|
||||
ERROR HY000: 'test.t1' is not VIEW
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# -- End of test case for Bug#34337.
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# -- End of 5.0 tests.
|
||||
# -----------------------------------------------------------------
|
||||
|
@ -467,6 +467,7 @@ use test;
|
||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;
|
||||
drop database mysqltest;
|
||||
drop view if exists v1;
|
||||
drop table if exists t1;
|
||||
create table t1 as select * from mysql.user where user='';
|
||||
delete from mysql.user where user='';
|
||||
flush privileges;
|
||||
|
@ -298,4 +298,42 @@ DROP TABLE t3;
|
||||
DROP PROCEDURE sp1;
|
||||
DROP PROCEDURE sp2;
|
||||
DROP PROCEDURE sp3;
|
||||
create table t1 (c_char char(255), c_varchar varchar(255), c_tinytext tinytext);
|
||||
create table t2 (c_tinyblob tinyblob);
|
||||
set @c = repeat(' ', 256);
|
||||
set @q = repeat('q', 256);
|
||||
set sql_mode = '';
|
||||
insert into t1 values(@c, @c, @c);
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c_char' at row 1
|
||||
Note 1265 Data truncated for column 'c_varchar' at row 1
|
||||
Note 1265 Data truncated for column 'c_tinytext' at row 1
|
||||
insert into t2 values(@c);
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c_tinyblob' at row 1
|
||||
insert into t1 values(@q, @q, @q);
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c_char' at row 1
|
||||
Warning 1265 Data truncated for column 'c_varchar' at row 1
|
||||
Warning 1265 Data truncated for column 'c_tinytext' at row 1
|
||||
insert into t2 values(@q);
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c_tinyblob' at row 1
|
||||
set sql_mode = 'traditional';
|
||||
insert into t1 values(@c, @c, @c);
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c_char' at row 1
|
||||
Note 1265 Data truncated for column 'c_varchar' at row 1
|
||||
Note 1265 Data truncated for column 'c_tinytext' at row 1
|
||||
insert into t2 values(@c);
|
||||
ERROR 22001: Data too long for column 'c_tinyblob' at row 1
|
||||
insert into t1 values(@q, NULL, NULL);
|
||||
ERROR 22001: Data too long for column 'c_char' at row 1
|
||||
insert into t1 values(NULL, @q, NULL);
|
||||
ERROR 22001: Data too long for column 'c_varchar' at row 1
|
||||
insert into t1 values(NULL, NULL, @q);
|
||||
ERROR 22001: Data too long for column 'c_tinytext' at row 1
|
||||
insert into t2 values(@q);
|
||||
ERROR 22001: Data too long for column 'c_tinyblob' at row 1
|
||||
drop table t1, t2;
|
||||
End of 5.0 tests
|
||||
|
@ -1,134 +1,46 @@
|
||||
Matthias 17.06.2005
|
||||
-------------------
|
||||
1. I changed the database test1 (dropped + created in SP test)
|
||||
to test4.
|
||||
Please adjust the SP test cases.
|
||||
2. There is a difference between my definition of
|
||||
innodb_tb4 + memory_tb4
|
||||
to the latest table definition used by disha.
|
||||
Please adjust the table definition if needed.
|
||||
3. The data load files are product of the Disha data generation script
|
||||
(downloaded ~20 May ?) + modified by Omer
|
||||
These load data fit fairly to the table definitions.
|
||||
2008-02-29 Matthias Leich
|
||||
=========================
|
||||
|
||||
4. How to execute the "small" test with 10 rows per table.
|
||||
Do NOT set the environment variable NO_REFRESH to a
|
||||
value <> ''.
|
||||
Start the test for example by
|
||||
./mysql-test-run.pl --vardir=/dev/shm/var \
|
||||
--force --suite=funcs_1 --do-test=myisam
|
||||
The "result" files fit mostly to this variant.
|
||||
1. The testsuite "funcs_1" is mostly intended for additional (compared
|
||||
to the common regression tests stored in mysql-test/t) checks
|
||||
of features (VIEWS, INFORMATION_SCHEMA, STORED PROCEDURES,...)
|
||||
introduced with MySQL 5.0.
|
||||
|
||||
Any database not in ('mysql','test') and any tables
|
||||
needed within a testcase ( t/<storage engine>_<test filed>.test )
|
||||
will be (re)created at the beginning of the test.
|
||||
2. There were some extensions of this suite when new information_schema
|
||||
views were introduced. But in most cases the tests for these views
|
||||
were stored within the regression testsuite (mysql-test/t).
|
||||
|
||||
5. How to execute the "big" test with many rows per table.
|
||||
Replace the directories
|
||||
suite/funcs_1/data and
|
||||
suite/funcs_1/r
|
||||
with the appropriate ones for the "big" test.
|
||||
Set the environment variable NO_REFRESH to a value <> ''.
|
||||
Start the test for example by
|
||||
./mysql-test-run.pl --vardir=/dev/shm/var \
|
||||
--force --suite=funcs_1 --do-test=myisam
|
||||
INFORMATION_SCHEMA views introduced with MySQL 5.1
|
||||
==================================================
|
||||
ENGINES (partially tested here)
|
||||
EVENTS (partially tested here)
|
||||
FILES
|
||||
GLOBAL_STATUS
|
||||
GLOBAL_VARIABLES
|
||||
PARTITIONS
|
||||
PLUGINS
|
||||
PROCESSLIST (full tested here)
|
||||
PROFILING
|
||||
REFERENTIAL_CONSTRAINTS
|
||||
SESSION_STATUS
|
||||
SESSION_VARIABLES
|
||||
|
||||
All databases and tables will be (re)created by the script
|
||||
<storage engine>__load.test .
|
||||
3. Some hints:
|
||||
- SHOW TABLES ... LIKE '<pattern>'
|
||||
does a case sensitive comparison between the tablename and
|
||||
the pattern.
|
||||
The names of the tables within the informationschema are in uppercase.
|
||||
So please use something like
|
||||
SHOW TABLES FOR information_schema LIKE 'TABLES'
|
||||
when you intend to get the same non empty result set on OS with and
|
||||
without case sensitive filesystems and default configuration.
|
||||
- The name of the data dictionary is 'information_schema' (lowercase).
|
||||
- Server on OS with filesystem with case sensitive filenames
|
||||
(= The files 'abc' and 'Abc' can coexist.)
|
||||
+ default configuration
|
||||
Example of behaviour:
|
||||
DROP DATABASE information_schema;
|
||||
ERROR 42000: Access denied for user ... to database 'information_schema'
|
||||
DROP DATABASE INFORMATION_SCHEMA;
|
||||
ERROR 42000: Access denied for user ... to database 'INFORMATION_SCHEMA'
|
||||
|
||||
6. I am not sure of the files
|
||||
./funcs_1/include/create_<whatever>.inc
|
||||
are in the moment needed. I included them, because I
|
||||
guess my VIEW testcase example needs them.
|
||||
|
||||
I guess the pushed files are far away from being perfect.
|
||||
It is a 8 hours hack.
|
||||
Please try them, create missing files and come up with improvements.
|
||||
|
||||
Good luck !
|
||||
|
||||
Matthias 17.06.2005
|
||||
===================================================================
|
||||
Omer 19.06.2005
|
||||
---------------
|
||||
1. Changed the structure of the memory_tb3 table to include two
|
||||
additional column f121, f122. These columns exist for the table in
|
||||
the other storage engines as TEXT. Since memory does not support
|
||||
TEXT, Disha did not include them. How ever I am using them in the
|
||||
Trigger tests so added them to the memory definition as CHAR(50);.
|
||||
Also modifyed the DataGen_modiy.pl file to account for these two
|
||||
column when generating the data.
|
||||
- checked in a new DataGen_modify.pl (create a 'lib' directory
|
||||
under 'funcs_1').
|
||||
- checked in a new memory_tb3.txt
|
||||
2. Added three <storage>_triggers.test files based on Matthias's
|
||||
structure above.
|
||||
3. Added three <storage>__triggers.result files
|
||||
4. Added the Trigger_master.test file in the trigger dierctory
|
||||
Note: This is not complete and is still under work
|
||||
5. Created a 'lib' directory and added the DataGen*.pl scripts to it
|
||||
(exists under the disha suite) but should be here as well).
|
||||
Omer 19.06.2005
|
||||
===================================================================
|
||||
Matthias 12.09.2005
|
||||
-------------------
|
||||
Replace the geometry data types by VARBINARY
|
||||
The removal of the geometry data types was necessary, because the
|
||||
execution of the funcs_1 testsuite should not depend on the
|
||||
availability of the geometry feature.
|
||||
Note: There are servers compiled without the geometry feature.
|
||||
|
||||
The columns are not removed, but their data type was changed
|
||||
VARBINARY. This allows us to omit any changes within the loader
|
||||
input files or data generation scripts.
|
||||
The replacement of geometry by VARCHAR allows us to use our
|
||||
|
||||
Matthias 12.09.2005
|
||||
===================================================================
|
||||
Matthias 14.09.2005
|
||||
-------------------
|
||||
The results of the <storage_engine>_views testcases suffer when
|
||||
executed in "--ps-protocol" mode from the open
|
||||
Bug#11589: mysqltest, --ps-protocol, strange output,
|
||||
float/double/real with zerofill .
|
||||
Implementation of a workaround:
|
||||
At the beginning of views_master.inc is a variable $have_bug_11589 .
|
||||
If this varable is set to 1, the ps-protocol will be switched
|
||||
of for the critical statements.
|
||||
Matthias 14.09.2005
|
||||
===================================================================
|
||||
Carsten 16.09.2005
|
||||
------------------
|
||||
1. The results of the datadict_<engine> testcases have been changed in nearly
|
||||
all occurrencies of --error <n> because now for the INFORMATION_SCHEMA only
|
||||
the --error 1044 (ERROR 42000: Access denied for user '..' to database
|
||||
'information_schema') seems to be used.
|
||||
2. To get identical results when using "--ps-protocol" some SELECTs FROM
|
||||
information_schema has been wrapped to suppress using ps-protocol because
|
||||
there are differences.
|
||||
3. The test using SELECT .. OUTFILE has been disabled due to bug #13202.
|
||||
4. Fixed datadict_<engine>.result files after the change that added 2 columns to
|
||||
the VIEWS table (DEFINER varchar(77), SECURITY_TYPE varchar(7)).
|
||||
===================================================================
|
||||
Matthias 25.08.2007
|
||||
-------------------
|
||||
Fixes for Bugs 30418,30420,30438,30440
|
||||
1. Replace error numbers with error names
|
||||
2. Replace static "InnoDB" (not all time available) used within an
|
||||
"alter table" by $OTHER_ENGINE_TYPE (set to MEMORY or MyISAM).
|
||||
Minor adjustment of column data type.
|
||||
3. Use mysqltest result set sorting in several cases.
|
||||
4. Avoid any statistics about help tables, because their content
|
||||
depends on configuration:
|
||||
developer release - help tables are empty
|
||||
build release - help tables have content + growing with version
|
||||
5. Add two help table related tests (one for build, one for developer)
|
||||
to ensure that informations about help tables within
|
||||
INFORMATION_SCHEMA.TABLES/STATISTICS are checked.
|
||||
General note:
|
||||
Most INFORMATION_SCHEMA properties (table layout, permissions etc.)
|
||||
are not affected by our variation of the storage engines except
|
||||
that some properties of our tables using a specific storage
|
||||
engine become visible. So it makes sense to decompose
|
||||
this test into a storage engine specific part and a non
|
||||
storage engine specific part in future.
|
||||
|
@ -1,4 +1,3 @@
|
||||
#### suite/funcs_1/cursors/cursors_master.test
|
||||
|
||||
let $message= NOT YET IMPLEMENTED: cursor tests;
|
||||
--source include/show_msg80.inc
|
||||
|
53
mysql-test/suite/funcs_1/datadict/basics_mixed1.inc
Normal file
53
mysql-test/suite/funcs_1/datadict/basics_mixed1.inc
Normal file
@ -0,0 +1,53 @@
|
||||
# suite/funcs_1/datadict/basics_mixed1.inc
|
||||
#
|
||||
# Auxiliary script to be sourced by suite/funcs_1/t/is_basics_mixed.test
|
||||
#
|
||||
# Author:
|
||||
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
|
||||
# testsuite funcs_1
|
||||
# Create this script based on older scripts and new code.
|
||||
#
|
||||
|
||||
# 1 Attempt to create tables and views when residing in information_schema
|
||||
# 1.1 CREATE TABLE
|
||||
USE information_schema;
|
||||
let $message= root: create a table with a name of an IS table directly in IS;
|
||||
let $dd_part1= CREATE TABLE;
|
||||
let $dd_part2= ( c1 INT );
|
||||
--source suite/funcs_1/datadict/basics_mixed2.inc
|
||||
# FIXME 3.2.1.6: error message ER_UNKNOWN_TABLE is misleading
|
||||
--error ER_UNKNOWN_TABLE
|
||||
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT);
|
||||
#
|
||||
# 1.2 CREATE VIEW
|
||||
# 1.2.1 Hit on existing INFORMATION_SCHEMA table
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
CREATE VIEW tables AS SELECT 'garbage';
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
CREATE VIEW tables AS SELECT * FROM information_schema.tables;
|
||||
# 1.2.2 New view
|
||||
# ER_DBACCESS_DENIED_ERROR would be better.
|
||||
--error ER_UNKNOWN_TABLE
|
||||
CREATE VIEW v1 AS SELECT 'garbage';
|
||||
|
||||
# 2 Attempt to create tables and views when residing in information_schema
|
||||
# 1.1 CREATE TABLE
|
||||
USE test;
|
||||
let $message= root: create a table with a name of an IS table from other db;
|
||||
let $dd_part1= CREATE TABLE information_schema.;
|
||||
let $dd_part2= ( c1 INT );
|
||||
--source suite/funcs_1/datadict/basics_mixed2.inc
|
||||
# FIXME 3.2.1.6: error message ER_UNKNOWN_TABLE is misleading
|
||||
--error ER_UNKNOWN_TABLE
|
||||
CREATE TABLE information_schema.t1 (f1 INT, f2 INT, f3 INT);
|
||||
#
|
||||
# Hit on existing INFORMATION_SCHEMA table
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
CREATE VIEW information_schema.tables AS SELECT 'garbage';
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
CREATE VIEW information_schema.tables AS
|
||||
SELECT * FROM information_schema.tables;
|
||||
# New table
|
||||
# ER_DBACCESS_DENIED_ERROR would be better.
|
||||
--error ER_UNKNOWN_TABLE
|
||||
CREATE VIEW information_schema.v1 AS SELECT 'garbage';
|
55
mysql-test/suite/funcs_1/datadict/basics_mixed2.inc
Normal file
55
mysql-test/suite/funcs_1/datadict/basics_mixed2.inc
Normal file
@ -0,0 +1,55 @@
|
||||
#### suite/funcs_1/datadict/basics_mixed2.inc
|
||||
#
|
||||
# Auxiliary script to be sourced by suite/funcs_1/datadict/is_basics_mixed1.inc
|
||||
#
|
||||
# contains all tables from INFORMATION_SCHEMA
|
||||
#
|
||||
# Usage example(snip of script):
|
||||
# let $dd_part1= CREATE TABLE information_schema.;
|
||||
# let $dd_part2= ( c1 INT );
|
||||
# --source suite/funcs_1/datadict/basics_mixed2.inc
|
||||
#
|
||||
# We expect to get
|
||||
# ERROR 42000: Access denied for user 'root'@'localhost'
|
||||
# to database 'information_schema'
|
||||
# for every statement.
|
||||
#
|
||||
# Author:
|
||||
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
|
||||
# testsuite funcs_1
|
||||
# Create this script based on older scripts and new code.
|
||||
#
|
||||
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 schemata $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 tables $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 columns $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 character_sets $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 collations $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 collation_character_set_applicability $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 routines $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 statistics $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 views $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 user_privileges $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 schema_privileges $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 table_privileges $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 column_privileges $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 table_constraints $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 key_column_usage $dd_part2;
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
eval $dd_part1 triggers $dd_part2;
|
||||
|
42
mysql-test/suite/funcs_1/datadict/basics_mixed3.inc
Normal file
42
mysql-test/suite/funcs_1/datadict/basics_mixed3.inc
Normal file
@ -0,0 +1,42 @@
|
||||
#### suite/funcs_1/datadict/basics_mixed3.inc
|
||||
#
|
||||
# Auxiliary routine to be sourced by suite/funcs_1/t/is_basics_mixed.test
|
||||
#
|
||||
# Check if INFORMATION_SCHEMA tables contain a schema_name like 'db_data%'.
|
||||
#
|
||||
# Author:
|
||||
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
|
||||
# testsuite funcs_1
|
||||
# Create this script based on older scripts and new code.
|
||||
#
|
||||
|
||||
# No column with the name of a database contained in:
|
||||
# character_sets collations collation_character_set_applicability
|
||||
# user_privileges
|
||||
SELECT DISTINCT table_schema FROM information_schema.columns
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
SELECT DISTINCT table_schema FROM information_schema.column_privileges
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
SELECT DISTINCT constraint_schema,table_schema
|
||||
FROM information_schema.key_column_usage
|
||||
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
||||
SELECT DISTINCT routine_schema FROM information_schema.routines
|
||||
WHERE routine_schema LIKE 'db_data%';
|
||||
SELECT DISTINCT schema_name FROM information_schema.schemata
|
||||
WHERE schema_name LIKE 'db_data%';
|
||||
SELECT DISTINCT table_schema FROM information_schema.schema_privileges
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
SELECT DISTINCT table_schema,index_schema FROM information_schema.statistics
|
||||
WHERE table_schema LIKE 'db_data%' OR index_schema LIKE 'db_data%';
|
||||
SELECT DISTINCT table_schema FROM information_schema.tables
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
SELECT DISTINCT constraint_schema,table_schema
|
||||
FROM information_schema.table_constraints
|
||||
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
||||
SELECT DISTINCT table_schema FROM information_schema.table_privileges
|
||||
WHERE table_schema LIKE 'db_data%';
|
||||
SELECT DISTINCT trigger_schema,event_object_schema
|
||||
FROM information_schema.triggers
|
||||
WHERE trigger_schema LIKE 'db_data%' OR event_object_schema LIKE 'db_data%';
|
||||
SELECT DISTINCT table_schema FROM information_schema.views
|
||||
WHERE table_schema LIKE 'db_data%';
|
122
mysql-test/suite/funcs_1/datadict/charset_collation.inc
Normal file
122
mysql-test/suite/funcs_1/datadict/charset_collation.inc
Normal file
@ -0,0 +1,122 @@
|
||||
# suite/funcs_1/datadict/charset_collation.inc
|
||||
#
|
||||
# Tests checking the content of the information_schema tables
|
||||
# character_sets
|
||||
# collations
|
||||
# collation_character_set_applicability
|
||||
#
|
||||
#
|
||||
# The amount and properties of character_sets/collations depend on the
|
||||
# build type
|
||||
# 2007-12 MySQL 5.0
|
||||
# ---------------------------------------------------------------------
|
||||
#
|
||||
# Variant 1 fits to
|
||||
# version_comment MySQL Enterprise Server (Commercial)
|
||||
# version_comment MySQL Enterprise Server (GPL)
|
||||
# version_comment MySQL Classic Server (Commercial)
|
||||
# version_comment MySQL Pushbuild Edition, build <number>
|
||||
# (version_comment Source distribution
|
||||
# and
|
||||
# compile was without "max" - > no collation 'utf8_general_ci')
|
||||
#
|
||||
# Variant 2 fits to
|
||||
# version_comment MySQL Enterprise Server (GPL)
|
||||
# version_comment MySQL Classic Server (Commercial)
|
||||
# version_comment MySQL Pushbuild Edition, build <number>
|
||||
# (version_comment Source distribution
|
||||
# and
|
||||
# compile was without "max" - > collation 'utf8_general_ci' exists)
|
||||
#
|
||||
# Difference between variant 1 and 2 is the collation 'utf8_general_ci'.
|
||||
#
|
||||
# Variant 3 fits to
|
||||
# version_comment MySQL Community Server (GPL)
|
||||
# version_comment MySQL Cluster Server (Commercial)
|
||||
#
|
||||
# Difference between variant 3 and 2 is within the collation properties
|
||||
# IS_COMPILED and SORTLEN.
|
||||
#
|
||||
# Created:
|
||||
# 2007-12-18 mleich - remove the unstable character_set/collation subtests
|
||||
# from include/datadict-master.inc
|
||||
# - create this new test
|
||||
#
|
||||
|
||||
# Create a low privileged user.
|
||||
--error 0, ER_CANNOT_USER
|
||||
DROP USER dbdict_test@localhost;
|
||||
CREATE USER dbdict_test@localhost;
|
||||
|
||||
--echo # Establish connection con (user=dbdict_test)
|
||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
||||
connect (con,localhost,dbdict_test,,);
|
||||
################################################################################
|
||||
#
|
||||
# The original requirements for the following tests were:
|
||||
#
|
||||
# 3.2.2.2: Ensure that the table (information_schema.character_sets) shows the
|
||||
# relevant information on every character set for which the current
|
||||
# user or PUBLIC have the USAGE privilege.
|
||||
#
|
||||
# 3.2.2.3: Ensure that the table (information_schema.character_sets) does not
|
||||
# show any information on any character set for which the current user
|
||||
# or PUBLIC have no USAGE privilege.
|
||||
#
|
||||
#
|
||||
# 3.2.3.2: Ensure that the table (information_schema.collations) shows the
|
||||
# relevant information on every collation for which the current user
|
||||
# or PUBLIC have the USAGE privilege.
|
||||
#
|
||||
# 3.2.3.3: Ensure that the table (information_schema.collations) does not show
|
||||
# any information on any collations for which the current user and
|
||||
# PUBLIC have no USAGE privilege.
|
||||
#
|
||||
#
|
||||
# 3.2.4.2: Ensure that the table
|
||||
# information_schema.collation_character_set_applicability
|
||||
# shows the relevant information on every collation/character set
|
||||
# combination for which the current user or PUBLIC have the USAGE
|
||||
# privilege.
|
||||
#
|
||||
# 3.2.4.3: Ensure that the table
|
||||
# information_schema.collation_character_set_applicability
|
||||
# does not show any information on any collation/character set
|
||||
# combinations for which the current user and PUBLIC have no
|
||||
# USAGE privilege.
|
||||
#
|
||||
# Notes (2007-12-19 mleich):
|
||||
# - The requirements are outdated because grant/revoke privilege for using a
|
||||
# characterset/collation were never implemented.
|
||||
# Therefore the tests should simply check the content of these tables.
|
||||
#
|
||||
# - The amount of collations/character sets grows with new MySQL releases.
|
||||
#
|
||||
# - Even within the same release the amount of records within these tables
|
||||
# can differ between different build types (community, enterprise, source,...)
|
||||
#
|
||||
#
|
||||
################################################################################
|
||||
--echo
|
||||
SELECT *
|
||||
FROM information_schema.character_sets
|
||||
ORDER BY character_set_name;
|
||||
|
||||
--echo
|
||||
SELECT *
|
||||
FROM information_schema.collations
|
||||
ORDER BY collation_name;
|
||||
|
||||
echo;
|
||||
--echo
|
||||
SELECT *
|
||||
FROM information_schema.collation_character_set_applicability
|
||||
ORDER BY collation_name, character_set_name;
|
||||
|
||||
|
||||
# Cleanup
|
||||
--echo # Switch to connection default + disconnect con
|
||||
connection default;
|
||||
disconnect con;
|
||||
DROP USER dbdict_test@localhost;
|
||||
|
87
mysql-test/suite/funcs_1/datadict/columns.inc
Normal file
87
mysql-test/suite/funcs_1/datadict/columns.inc
Normal file
@ -0,0 +1,87 @@
|
||||
# suite/funcs_1/datadict/is_columns.inc
|
||||
#
|
||||
# Auxiliary script to be sourced by
|
||||
# is_columns_is
|
||||
# is_columns_mysql
|
||||
# is_columns_<engine>
|
||||
#
|
||||
# Purpose:
|
||||
# Check the content of information_schema.columns about tables within certain
|
||||
# database/s.
|
||||
#
|
||||
# Usage:
|
||||
# The variable $my_where has to
|
||||
# - be set before sourcing this script.
|
||||
# - contain the first part of the WHERE qualification
|
||||
# Example:
|
||||
# let $my_where = WHERE table_schema = 'information_schema'
|
||||
# AND table_name <> 'profiling';
|
||||
# --source suite/funcs_1/datadict/is_columns.inc
|
||||
#
|
||||
# Author:
|
||||
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
|
||||
# testsuite funcs_1
|
||||
# Create this script based on older scripts and new code.
|
||||
#
|
||||
|
||||
--source suite/funcs_1/datadict/datadict_bug_12777.inc
|
||||
eval
|
||||
SELECT * FROM information_schema.columns
|
||||
$my_where
|
||||
ORDER BY table_schema, table_name, column_name;
|
||||
|
||||
--echo ##########################################################################
|
||||
--echo # Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
|
||||
--echo ##########################################################################
|
||||
eval
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
$my_where
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
|
||||
#FIXME 3.2.6.2: check the value 2.0079 tinytext ucs2 ucs2_general_ci
|
||||
eval
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
$my_where
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
|
||||
eval
|
||||
SELECT DISTINCT
|
||||
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
DATA_TYPE,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM information_schema.columns
|
||||
$my_where
|
||||
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
|
||||
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
|
||||
|
||||
echo --> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values;
|
||||
echo --> are 0, which is intended behavior, and the result of 0 / 0 IS NULL;
|
||||
--source suite/funcs_1/datadict/datadict_bug_12777.inc
|
||||
eval
|
||||
SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
|
||||
TABLE_SCHEMA,
|
||||
TABLE_NAME,
|
||||
COLUMN_NAME,
|
||||
DATA_TYPE,
|
||||
CHARACTER_MAXIMUM_LENGTH,
|
||||
CHARACTER_OCTET_LENGTH,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME,
|
||||
COLUMN_TYPE
|
||||
FROM information_schema.columns
|
||||
$my_where
|
||||
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
|
||||
|
54
mysql-test/suite/funcs_1/datadict/datadict.pre
Normal file
54
mysql-test/suite/funcs_1/datadict/datadict.pre
Normal file
@ -0,0 +1,54 @@
|
||||
#### suite/funcs_1/datadict/datadict.pre
|
||||
#
|
||||
# Auxiliary script which loads prerequisites
|
||||
# (variables needed for --replace_result ...)
|
||||
# in datadictionary tests.
|
||||
#
|
||||
# Author:
|
||||
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
|
||||
# testsuite funcs_1
|
||||
# Create this script based on older scripts and new code.
|
||||
#
|
||||
--disable_query_log
|
||||
|
||||
# Bug#12777 Different size shown for VARCHAR(n) columns (with n> 64)
|
||||
# in INFORMATION_SCHEMA
|
||||
# This bug was unfortunately (for testers) declared to be no bug.
|
||||
# So CHARACTER_MAXIMUM_LENGTH of several <whatever>_CATALOG columns within
|
||||
# the INFORMATION_SCHEMA depends on PATH_MAX of the operating system.
|
||||
# Workaround for this problem:
|
||||
# Get the size of ONE known colum and check the size against some values to
|
||||
# be able to use the correct --replace_result statement. Using this only the
|
||||
# one pair of 'wrong' values is replaced and not all occurrencies of all
|
||||
# possible pairs of values. See bug #12777 for details.
|
||||
SELECT character_maximum_length INTO @CML
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'information_schema'
|
||||
AND table_name = 'columns'
|
||||
AND column_name = 'table_catalog';
|
||||
|
||||
let $bug_12777_0512= `SELECT @CML = 512`;
|
||||
let $bug_12777_1023= `SELECT @CML = 1023`;
|
||||
let $bug_12777_1024= `SELECT @CML = 1024`;
|
||||
let $bug_12777_2048= `SELECT @CML = 2048`;
|
||||
# 4096 is the value used in the files with expected results.
|
||||
let $bug_12777_4095= `SELECT @CML = 4095`;
|
||||
if (0)
|
||||
{
|
||||
# enable this for debugging only, but NOT in a pushed version, as then the
|
||||
# result changes from OS to OS ...
|
||||
eval SELECT @CML AS 'CML',
|
||||
$bug_12777_0512 AS '512',
|
||||
$bug_12777_1023 AS '1023',
|
||||
$bug_12777_1024 AS '1024',
|
||||
$bug_12777_2048 AS '2048',
|
||||
$bug_12777_4095 AS '4095';
|
||||
}
|
||||
|
||||
|
||||
# Prepare a variable to be able to suppress machine dependant diffs
|
||||
# this can be used in: --replace_result $SERVER_NAME <SERVER_NAME>
|
||||
let $SERVER_NAME= `SELECT DISTINCT host FROM mysql.user
|
||||
WHERE host NOT In ("localhost", "127.0.0.1", "%")`;
|
||||
--enable_query_log
|
||||
|
@ -67,56 +67,40 @@ let $engine_myisam= `SELECT @ENGINE_MYISAM = 1`;
|
||||
let $engine_innodb= `SELECT @ENGINE_INNODB = 1`;
|
||||
let $engine_memory= `SELECT @ENGINE_MEMORY = 1`;
|
||||
|
||||
# Decide, if the objects are to be (re)created
|
||||
#
|
||||
# - once at the beginning of a set of testcases ('$NO_REFRESH' <> '' --> TRUE)
|
||||
# That means the current script must not (re)create any object.
|
||||
# It can expect, that the objects already exist.
|
||||
#
|
||||
# - per every testscript/case ('$NO_REFRESH' = '' --> FALSE)
|
||||
# That means all objects have to be (re)created within the current script.
|
||||
#
|
||||
eval SET @NO_REFRESH = IF( '$NO_REFRESH' = '', 0, 1);
|
||||
let $run= `SELECT @NO_REFRESH = 0`;
|
||||
if ($run)
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS test1;
|
||||
--enable_warnings
|
||||
CREATE DATABASE test1;
|
||||
USE test;
|
||||
|
||||
if ($engine_innodb)
|
||||
{
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS test1;
|
||||
--enable_warnings
|
||||
CREATE DATABASE test1;
|
||||
USE test;
|
||||
|
||||
# until a statement 'eval --source suite/funcs_1/include/$var_tb1.inc
|
||||
# works we need to have similar statements for each $engine
|
||||
if ($engine_innodb)
|
||||
{
|
||||
--source suite/funcs_1/include/innodb_tb1.inc
|
||||
--source suite/funcs_1/include/innodb_tb2.inc
|
||||
--source suite/funcs_1/include/innodb_tb3.inc
|
||||
--source suite/funcs_1/include/innodb_tb4.inc
|
||||
USE test1;
|
||||
--source suite/funcs_1/include/innodb_tb2.inc
|
||||
}
|
||||
|
||||
if ($engine_memory)
|
||||
{
|
||||
--source suite/funcs_1/include/memory_tb1.inc
|
||||
--source suite/funcs_1/include/memory_tb2.inc
|
||||
--source suite/funcs_1/include/memory_tb3.inc
|
||||
--source suite/funcs_1/include/memory_tb4.inc
|
||||
USE test1;
|
||||
--source suite/funcs_1/include/memory_tb2.inc
|
||||
}
|
||||
|
||||
if ($engine_myisam)
|
||||
{
|
||||
--source suite/funcs_1/include/myisam_tb1.inc
|
||||
--source suite/funcs_1/include/myisam_tb2.inc
|
||||
--source suite/funcs_1/include/myisam_tb3.inc
|
||||
--source suite/funcs_1/include/myisam_tb4.inc
|
||||
USE test1;
|
||||
--source suite/funcs_1/include/myisam_tb2.inc
|
||||
}
|
||||
USE test;
|
||||
--source suite/funcs_1/include/sp_tb.inc
|
||||
--source suite/funcs_1/include/innodb_tb1.inc
|
||||
--source suite/funcs_1/include/innodb_tb2.inc
|
||||
--source suite/funcs_1/include/innodb_tb3.inc
|
||||
--source suite/funcs_1/include/innodb_tb4.inc
|
||||
USE test1;
|
||||
--source suite/funcs_1/include/innodb_tb2.inc
|
||||
}
|
||||
|
||||
if ($engine_memory)
|
||||
{
|
||||
--source suite/funcs_1/include/memory_tb1.inc
|
||||
--source suite/funcs_1/include/memory_tb2.inc
|
||||
--source suite/funcs_1/include/memory_tb3.inc
|
||||
--source suite/funcs_1/include/memory_tb4.inc
|
||||
USE test1;
|
||||
--source suite/funcs_1/include/memory_tb2.inc
|
||||
}
|
||||
|
||||
if ($engine_myisam)
|
||||
{
|
||||
--source suite/funcs_1/include/myisam_tb1.inc
|
||||
--source suite/funcs_1/include/myisam_tb2.inc
|
||||
--source suite/funcs_1/include/myisam_tb3.inc
|
||||
--source suite/funcs_1/include/myisam_tb4.inc
|
||||
USE test1;
|
||||
--source suite/funcs_1/include/myisam_tb2.inc
|
||||
}
|
||||
USE test;
|
||||
--source suite/funcs_1/include/sp_tb.inc
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,57 +0,0 @@
|
||||
#### suite/funcs_1/datadict/datadict_show_schema.test
|
||||
|
||||
# shows content of tables from INFORMATION_SCHEMA
|
||||
|
||||
# usage:
|
||||
|
||||
# let $message= <a message for the .result file>;
|
||||
# let $dbname= <prefix_of_a_cb_name>;
|
||||
# --source suite/funcs_1/datadict/datadict_show_schema.test
|
||||
|
||||
--source include/show_msg.inc
|
||||
|
||||
eval select *
|
||||
from information_schema.schemata
|
||||
where schema_name like '$dbname%';
|
||||
|
||||
eval select table_catalog, table_schema, engine
|
||||
from information_schema.tables
|
||||
where table_schema like '$dbname%';
|
||||
|
||||
eval select *
|
||||
from information_schema.columns
|
||||
where table_schema like '$dbname%';
|
||||
|
||||
eval select table_schema, table_name, is_updatable
|
||||
from information_schema.views
|
||||
where table_schema like '$dbname%';
|
||||
|
||||
eval select routine_name, routine_type, security_type, sql_mode
|
||||
from information_schema.routines
|
||||
where routine_schema like '$dbname%';
|
||||
|
||||
eval select table_name, index_schema, index_name, index_type
|
||||
from information_schema.statistics
|
||||
where table_schema like '$dbname%';
|
||||
|
||||
--replace_result $SERVER_NAME <SERVER_NAME>
|
||||
--sorted_result
|
||||
eval select *
|
||||
from information_schema.user_privileges;
|
||||
# where grantee="'u_6_401013'@'%'";
|
||||
|
||||
eval select *
|
||||
from information_schema.column_privileges
|
||||
where table_schema like '$dbname%';
|
||||
|
||||
eval select *
|
||||
from information_schema.table_privileges
|
||||
where table_schema like '$dbname%';
|
||||
|
||||
eval select *
|
||||
from information_schema.key_column_usage
|
||||
where table_schema like '$dbname%';
|
||||
|
||||
eval SELECT *
|
||||
FROM information_schema.triggers
|
||||
WHERE trigger_schema LIKE '$dbname%';
|
@ -1,28 +0,0 @@
|
||||
#### suite/funcs_1/datadict/datadict_show_table_design.test
|
||||
#
|
||||
# - shows design of *one* table from INFORMATION_SCHEMA
|
||||
# - used to have identical 'view' on all tested tables
|
||||
#
|
||||
# Usage:
|
||||
#
|
||||
# let $is_table= <name of one of the tables>;
|
||||
# --source suite/funcs_1/datadict/datadict_show_table_design.test
|
||||
|
||||
USE information_schema;
|
||||
|
||||
--source suite/funcs_1/datadict/datadict_bug_12777.inc
|
||||
eval DESC $is_table;
|
||||
|
||||
--source suite/funcs_1/datadict/datadict_bug_12777.inc
|
||||
eval SHOW CREATE TABLE $is_table;
|
||||
|
||||
eval SELECT COUNT(*) FROM information_schema.columns
|
||||
WHERE table_schema = 'information_schema'
|
||||
AND table_name = '$is_table'
|
||||
ORDER BY ordinal_position;
|
||||
|
||||
--source suite/funcs_1/datadict/datadict_bug_12777.inc
|
||||
eval SELECT * FROM information_schema.columns
|
||||
WHERE table_schema = 'information_schema'
|
||||
AND table_name = '$is_table'
|
||||
ORDER BY ordinal_position;
|
@ -1,62 +0,0 @@
|
||||
#### suite/funcs_1/datadict/datadict_tables.inc
|
||||
|
||||
# contains all tables from INFORMATION_SCHEMA
|
||||
|
||||
# usage:
|
||||
|
||||
# --source suite/funcs_1/datadict/datadict_tables.inc
|
||||
|
||||
--source include/show_msg.inc
|
||||
|
||||
eval $dd_part1 schemata $dd_part2;
|
||||
|
||||
#FIXME: splitting the "SELECT * FROM tables" in two parts until
|
||||
#FIXME: Bug #12397: wrong values shown in column CREATE_OPTIONS of INFORMATION_SCHEMA.TABLES
|
||||
#FIXME: is solved, like done in the _master.test, cannot be done here, so we replace here
|
||||
#FIXME: the result for ALL rows.
|
||||
# 9 AVG_ROW_LENGTH
|
||||
# 10 DATA_LENGTH
|
||||
# 11 MAX_DATA_LENGTH
|
||||
## 12 INDEX_LENGTH
|
||||
# 13 DATA_FREE
|
||||
# 15 CREATE_TIME
|
||||
# 16 UPDATE_TIME
|
||||
# 20 CREATE_OPTIONS
|
||||
--replace_column 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "YYYY-MM-DD hh:mm:ss" 16 "YYYY-MM-DD hh:mm:ss" 20 "#CO#"
|
||||
eval $dd_part1 tables $dd_part2;
|
||||
|
||||
--source suite/funcs_1/datadict/datadict_bug_12777.inc
|
||||
eval $dd_part1 columns $dd_part2;
|
||||
eval $dd_part1 character_sets $dd_part2;
|
||||
eval $dd_part1 collations where collation_name <> 'utf8_general_cs' $dd_part2;
|
||||
eval $dd_part1 collation_character_set_applicability where collation_name <> 'utf8_general_cs' $dd_part2;
|
||||
--replace_column 16 <Created> 17 <Last_Altered>
|
||||
eval $dd_part1 routines $dd_part2;
|
||||
eval $dd_part1 statistics $dd_part2;
|
||||
eval $dd_part1 views $dd_part2;
|
||||
eval $dd_part1 user_privileges $dd_part2;
|
||||
eval $dd_part1 schema_privileges $dd_part2;
|
||||
eval $dd_part1 table_privileges $dd_part2;
|
||||
eval $dd_part1 column_privileges $dd_part2;
|
||||
eval $dd_part1 table_constraints $dd_part2;
|
||||
eval $dd_part1 key_column_usage $dd_part2;
|
||||
eval $dd_part1 triggers $dd_part2;
|
||||
|
||||
# later planned new tables for INFORMATION_SCHEMA (not before version 5.0.11)
|
||||
#
|
||||
# (see Reference Manual: 22.1.16. Other INFORMATION_SCHEMA Tables):
|
||||
#
|
||||
# parameters
|
||||
# referential_constraints
|
||||
#
|
||||
# check them here although they currently does not exist, but using this we
|
||||
# immedeatly get notice when they are implemented
|
||||
|
||||
#### DON'T FORGET TO ADD THE NEW TABLES TO THE CORRESPONDING FILES
|
||||
#### datadict_tables_error_<errno>.test !
|
||||
|
||||
--error 1109
|
||||
eval $dd_part1 parameters $dd_part2;
|
||||
|
||||
--error 1109
|
||||
eval $dd_part1 referential_constraints $dd_part2;
|
@ -1,33 +0,0 @@
|
||||
#### suite/funcs_1/datadict/datadict_tables.inc
|
||||
|
||||
# contains all tables from INFORMATION_SCHEMA
|
||||
|
||||
# usage:
|
||||
|
||||
# --source suite/funcs_1/datadict/datadict_tables.inc
|
||||
|
||||
|
||||
#--disable_query_log
|
||||
#eval SET @aux= 'This testcase shows the error number $error_no';
|
||||
#let $message= `SELECT @aux`;
|
||||
#--enable_query_log
|
||||
--source include/show_msg.inc
|
||||
|
||||
--disable_abort_on_error
|
||||
eval $dd_part1 schemata $dd_part2;
|
||||
eval $dd_part1 tables $dd_part2;
|
||||
eval $dd_part1 columns $dd_part2;
|
||||
eval $dd_part1 character_sets $dd_part2;
|
||||
eval $dd_part1 collations $dd_part2;
|
||||
eval $dd_part1 collation_character_set_applicability $dd_part2;
|
||||
eval $dd_part1 routines $dd_part2;
|
||||
eval $dd_part1 statistics $dd_part2;
|
||||
eval $dd_part1 views $dd_part2;
|
||||
eval $dd_part1 user_privileges $dd_part2;
|
||||
eval $dd_part1 schema_privileges $dd_part2;
|
||||
eval $dd_part1 table_privileges $dd_part2;
|
||||
eval $dd_part1 column_privileges $dd_part2;
|
||||
eval $dd_part1 table_constraints $dd_part2;
|
||||
eval $dd_part1 key_column_usage $dd_part2;
|
||||
eval $dd_part1 triggers $dd_part2;
|
||||
--enable_abort_on_error
|
@ -1,80 +0,0 @@
|
||||
#### suite/funcs_1/datadict/datadict_tables.inc
|
||||
|
||||
# contains all tables from INFORMATION_SCHEMA
|
||||
|
||||
# usage:
|
||||
|
||||
# --source suite/funcs_1/datadict/datadict_tables_err_<no>.inc
|
||||
#
|
||||
# up to a change of "mysqltest", which makes lines like "eval --error $err_no"
|
||||
# possible we will have some different files with the same content except the
|
||||
# error numbers.
|
||||
|
||||
--source include/show_msg.inc
|
||||
|
||||
let $message= known error 1 (Can_t create/write to file ...):;
|
||||
--source include/show_msg.inc
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 schemata $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 tables $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 columns $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 character_sets $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 collations $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 collation_character_set_applicability $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 routines $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 statistics $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 views $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 user_privileges $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 schema_privileges $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 table_privileges $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 column_privileges $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 table_constraints $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 key_column_usage $dd_part2;
|
||||
|
||||
--replace_result '\\' '/'
|
||||
--error 1
|
||||
eval $dd_part1 triggers $dd_part2;
|
@ -1,51 +0,0 @@
|
||||
#### suite/funcs_1/datadict/datadict_tables_error_1044.inc
|
||||
|
||||
# contains all tables from INFORMATION_SCHEMA
|
||||
|
||||
# usage:
|
||||
|
||||
# --source suite/funcs_1/datadict/datadict_tables_err_<no>.inc
|
||||
#
|
||||
# up to a change of "mysqltest", which makes lines like "eval --error $err_no"
|
||||
# possible we will have some different files with the same content except the
|
||||
# error numbers.
|
||||
|
||||
--source include/show_msg.inc
|
||||
|
||||
# e.g.: ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||
|
||||
let $message= known error 1044 (ERROR 42000: Access denied for user ... to database ...):;
|
||||
--source include/show_msg.inc
|
||||
|
||||
--error 1044
|
||||
eval $dd_part1 schemata $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 tables $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 columns $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 character_sets $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 collations $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 collation_character_set_applicability $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 routines $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 statistics $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 views $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 user_privileges $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 schema_privileges $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 table_privileges $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 column_privileges $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 table_constraints $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 key_column_usage $dd_part2;
|
||||
--error 1044
|
||||
eval $dd_part1 triggers $dd_part2;
|
@ -1,49 +0,0 @@
|
||||
#### suite/funcs_1/datadict/datadict_tables.inc
|
||||
|
||||
# contains all tables from INFORMATION_SCHEMA
|
||||
|
||||
# usage:
|
||||
|
||||
# --source suite/funcs_1/datadict/datadict_tables_err_<no>.inc
|
||||
#
|
||||
# up to a change of "mysqltest", which makes lines like "eval --error $err_no"
|
||||
# possible we will have some different files with the same content except the
|
||||
# error numbers.
|
||||
|
||||
--source include/show_msg.inc
|
||||
|
||||
let $message= known error 1049 (ERROR 42000: Unknown database ...):;
|
||||
--source include/show_msg.inc
|
||||
|
||||
--error 1049
|
||||
eval $dd_part1 schemata $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 tables $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 columns $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 character_sets $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 collations $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 collation_character_set_applicability $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 routines $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 statistics $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 views $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 user_privileges $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 schema_privileges $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 table_privileges $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 column_privileges $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 table_constraints $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 key_column_usage $dd_part2;
|
||||
--error 1049
|
||||
eval $dd_part1 triggers $dd_part2;
|
@ -1,49 +0,0 @@
|
||||
#### suite/funcs_1/datadict/datadict_tables.inc
|
||||
|
||||
# contains all tables from INFORMATION_SCHEMA
|
||||
|
||||
# usage:
|
||||
|
||||
# --source suite/funcs_1/datadict/datadict_tables_err_<no>.inc
|
||||
#
|
||||
# up to a change of "mysqltest", which makes lines like "eval --error $err_no"
|
||||
# possible we will have some different files with the same content except the
|
||||
# error numbers.
|
||||
|
||||
--source include/show_msg.inc
|
||||
|
||||
let $message= known error 1051:;
|
||||
--source include/show_msg.inc
|
||||
|
||||
--error 1051
|
||||
eval $dd_part1 schemata $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 tables $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 columns $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 character_sets $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 collations $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 collation_character_set_applicability $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 routines $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 statistics $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 views $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 user_privileges $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 schema_privileges $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 table_privileges $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 column_privileges $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 table_constraints $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 key_column_usage $dd_part2;
|
||||
--error 1051
|
||||
eval $dd_part1 triggers $dd_part2;
|
@ -1,49 +0,0 @@
|
||||
#### suite/funcs_1/datadict/datadict_tables.inc
|
||||
|
||||
# contains all tables from INFORMATION_SCHEMA
|
||||
|
||||
# usage:
|
||||
|
||||
# --source suite/funcs_1/datadict/datadict_tables_err_<no>.inc
|
||||
#
|
||||
# up to a change of "mysqltest", which makes lines like "eval --error $err_no"
|
||||
# possible we will have some different files with the same content except the
|
||||
# error numbers.
|
||||
|
||||
--source include/show_msg.inc
|
||||
|
||||
let $message= known error 1146:;
|
||||
--source include/show_msg.inc
|
||||
|
||||
--error 1146
|
||||
eval $dd_part1 schemata $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 tables $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 columns $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 character_sets $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 collations $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 collation_character_set_applicability $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 routines $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 statistics $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 views $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 user_privileges $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 schema_privileges $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 table_privileges $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 column_privileges $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 table_constraints $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 key_column_usage $dd_part2;
|
||||
--error 1146
|
||||
eval $dd_part1 triggers $dd_part2;
|
@ -1,49 +0,0 @@
|
||||
#### suite/funcs_1/datadict/datadict_tables.inc
|
||||
|
||||
# contains all tables from INFORMATION_SCHEMA
|
||||
|
||||
# usage:
|
||||
|
||||
# --source suite/funcs_1/datadict/datadict_tables_err_<no>.inc
|
||||
#
|
||||
# up to a change of "mysqltest", which makes lines like "eval --error $err_no"
|
||||
# possible we will have some different files with the same content except the
|
||||
# error numbers.
|
||||
|
||||
--source include/show_msg.inc
|
||||
|
||||
let $message= known error 1288:;
|
||||
--source include/show_msg.inc
|
||||
|
||||
--error 1288
|
||||
eval $dd_part1 schemata $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 tables $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 columns $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 character_sets $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 collations $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 collation_character_set_applicability $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 routines $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 statistics $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 views $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 user_privileges $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 schema_privileges $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 table_privileges $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 column_privileges $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 table_constraints $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 key_column_usage $dd_part2;
|
||||
--error 1288
|
||||
eval $dd_part1 triggers $dd_part2;
|
42
mysql-test/suite/funcs_1/datadict/is_table_query.inc
Normal file
42
mysql-test/suite/funcs_1/datadict/is_table_query.inc
Normal file
@ -0,0 +1,42 @@
|
||||
# suite/funcs_1/datadict/is_table_query.inc
|
||||
#
|
||||
# Check that every INFORMATION_SCHEMA table can be queried with a SELECT
|
||||
# statement, just as if it were an ordinary user-defined table.
|
||||
# (Requirement 3.2.1.1)
|
||||
#
|
||||
# The variable $is_table must be set before sourcing this script.
|
||||
#
|
||||
# Author:
|
||||
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
|
||||
# testsuite funcs_1
|
||||
# Create this script based on older scripts and new code.
|
||||
#
|
||||
--disable_warnings
|
||||
DROP VIEW IF EXISTS test.v1;
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP FUNCTION IF EXISTS test.f1;
|
||||
--enable_warnings
|
||||
eval CREATE VIEW test.v1 AS SELECT * FROM information_schema.$is_table;
|
||||
eval CREATE PROCEDURE test.p1() SELECT * FROM information_schema.$is_table;
|
||||
delimiter //;
|
||||
eval CREATE FUNCTION test.f1() returns BIGINT
|
||||
BEGIN
|
||||
DECLARE counter BIGINT DEFAULT NULL;
|
||||
SELECT COUNT(*) INTO counter FROM information_schema.$is_table;
|
||||
RETURN counter;
|
||||
END//
|
||||
delimiter ;//
|
||||
|
||||
|
||||
# We are not interested to check the content here.
|
||||
--echo # Attention: The printing of the next result sets is disabled.
|
||||
--disable_result_log
|
||||
eval SELECT * FROM information_schema.$is_table;
|
||||
SELECT * FROM test.v1;
|
||||
CALL test.p1;
|
||||
SELECT test.f1();
|
||||
--enable_result_log
|
||||
|
||||
DROP VIEW test.v1;
|
||||
DROP PROCEDURE test.p1;
|
||||
DROP FUNCTION test.f1;
|
55
mysql-test/suite/funcs_1/datadict/statistics.inc
Normal file
55
mysql-test/suite/funcs_1/datadict/statistics.inc
Normal file
@ -0,0 +1,55 @@
|
||||
# suite/funcs_1/datadict/statistics.inc
|
||||
#
|
||||
# Auxiliary script to be sourced by
|
||||
# is_statistics_is
|
||||
# is_statistics_mysql
|
||||
# is_statistics_<engine>
|
||||
#
|
||||
# Purpose:
|
||||
# Check the content of information_schema.statistics about tables within the
|
||||
# database '$database'.
|
||||
#
|
||||
# Usage:
|
||||
# The variable $database has to be set before sourcing this script.
|
||||
# Example:
|
||||
# let $database = db_data;
|
||||
#
|
||||
# Author:
|
||||
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
|
||||
# testsuite funcs_1
|
||||
# Create this script based on older scripts and new code.
|
||||
#
|
||||
|
||||
--source suite/funcs_1/datadict/datadict.pre
|
||||
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
--enable_warnings
|
||||
CREATE DATABASE db_datadict;
|
||||
|
||||
# Create a low privileged user.
|
||||
# Note: The database db_datadict is just a "home" for the low privileged user
|
||||
# and not in the focus of testing.
|
||||
--error 0,ER_CANNOT_USER
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON db_datadict.* TO testuser1@localhost;
|
||||
|
||||
let $my_select = SELECT * FROM information_schema.statistics
|
||||
$my_where
|
||||
ORDER BY table_schema, table_name, index_name, seq_in_index, column_name;
|
||||
--replace_column 10 #CARD#
|
||||
eval $my_select;
|
||||
|
||||
--echo # Establish connection testuser1 (user=testuser1)
|
||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
||||
connect (testuser1,localhost,testuser1,,db_datadict);
|
||||
--replace_column 10 #CARD#
|
||||
eval $my_select;
|
||||
|
||||
--echo # Switch to connection default and close connection testuser1
|
||||
connection default;
|
||||
disconnect testuser1;
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE db_datadict;
|
||||
|
45
mysql-test/suite/funcs_1/datadict/table_constraints.inc
Normal file
45
mysql-test/suite/funcs_1/datadict/table_constraints.inc
Normal file
@ -0,0 +1,45 @@
|
||||
# suite/funcs_1/datadict/table_constraints.inc
|
||||
#
|
||||
# Auxiliary script to be sourced by
|
||||
# suite/funcs_1/t/is_table_constraints_mysql.test
|
||||
# suite/funcs_1/t/is_table_constraints_is.test
|
||||
#
|
||||
# The variable
|
||||
# $table_schema database to be inspected
|
||||
# has to be set before sourcing this script.
|
||||
#
|
||||
# Author:
|
||||
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
|
||||
# testsuite funcs_1
|
||||
# Create this script based on older scripts and new code.
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
--enable_warnings
|
||||
CREATE DATABASE db_datadict;
|
||||
|
||||
# Create a low privileged user.
|
||||
# Note: The database db_datadict is just a "home" for the low privileged user
|
||||
# and not in the focus of testing.
|
||||
--error 0,ER_CANNOT_USER
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON db_datadict.* TO testuser1@localhost;
|
||||
|
||||
let $my_select = SELECT * FROM information_schema.table_constraints
|
||||
WHERE table_schema = '$table_schema'
|
||||
ORDER BY table_schema,table_name,constraint_name;
|
||||
eval $my_select;
|
||||
|
||||
--echo # Establish connection testuser1 (user=testuser1)
|
||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
||||
connect (testuser1,localhost,testuser1,,db_datadict);
|
||||
eval $my_select;
|
||||
|
||||
--echo # Switch to connection default and close connection testuser1
|
||||
connection default;
|
||||
disconnect testuser1;
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE db_datadict;
|
||||
|
39
mysql-test/suite/funcs_1/datadict/tables1.inc
Normal file
39
mysql-test/suite/funcs_1/datadict/tables1.inc
Normal file
@ -0,0 +1,39 @@
|
||||
# suite/funcs_1/datadict/tables1.inc
|
||||
#
|
||||
# Auxiliary script to be sourced by
|
||||
# is_tables_mysql.test
|
||||
# is_tables_is.test
|
||||
# is_tables_<engine>.test
|
||||
#
|
||||
# Author:
|
||||
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
|
||||
# testsuite funcs_1
|
||||
# Create this script based on older scripts and new code.
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS db_datadict;
|
||||
--enable_warnings
|
||||
CREATE DATABASE db_datadict;
|
||||
|
||||
--source suite/funcs_1/datadict/tables2.inc
|
||||
|
||||
# Create a low privileged user.
|
||||
# Note: The database db_datadict is just a "home" for the low privileged user
|
||||
# and not in the focus of testing.
|
||||
--error 0,ER_CANNOT_USER
|
||||
DROP USER testuser1@localhost;
|
||||
CREATE USER testuser1@localhost;
|
||||
GRANT SELECT ON db_datadict.* TO testuser1@localhost;
|
||||
|
||||
--echo # Establish connection testuser1 (user=testuser1)
|
||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
||||
connect (testuser1,localhost,testuser1,,db_datadict);
|
||||
--source suite/funcs_1/datadict/tables2.inc
|
||||
|
||||
--echo # Switch to connection default and close connection testuser1
|
||||
connection default;
|
||||
disconnect testuser1;
|
||||
DROP USER testuser1@localhost;
|
||||
DROP DATABASE db_datadict;
|
||||
|
47
mysql-test/suite/funcs_1/datadict/tables2.inc
Normal file
47
mysql-test/suite/funcs_1/datadict/tables2.inc
Normal file
@ -0,0 +1,47 @@
|
||||
# suite/funcs_1/datadict/tables2.inc
|
||||
#
|
||||
# Auxiliary script to be sourced by suite/funcs_1/datadict/tables1.inc.
|
||||
#
|
||||
# Author:
|
||||
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
|
||||
# testsuite funcs_1
|
||||
# Create this script based on older scripts and new code.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
# 8 TABLE_ROWS
|
||||
# 9 AVG_ROW_LENGTH
|
||||
# 10 DATA_LENGTH
|
||||
# 11 MAX_DATA_LENGTH
|
||||
# 12 INDEX_LENGTH
|
||||
# 13 DATA_FREE
|
||||
# 15 CREATE_TIME
|
||||
# 16 UPDATE_TIME
|
||||
# 17 CHECK_TIME
|
||||
# 20 CREATE_OPTIONS
|
||||
# 21 TABLE_COMMENT User defined comment
|
||||
# + InnoDB
|
||||
# + NDB: "number_of_replicas: <number>" appended
|
||||
# + InnoDB: "InnoDB free: <number_kB> kB" appended
|
||||
# <number_kB> depends on tablespace history!
|
||||
# The LEFT/INSTR/IF/LENGTH stuff should remove these
|
||||
# storage engine specific part.
|
||||
let $innodb_pattern = 'InnoDB free';
|
||||
let $ndb_pattern = 'number_of_replicas';
|
||||
--vertical_results
|
||||
--replace_column 8 "#TBLR#" 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "#CRT#" 16 "#UT#" 17 "#CT#" 20 "#CO#" 21 "#TC#"
|
||||
eval
|
||||
SELECT *,
|
||||
LEFT( table_comment,
|
||||
IF(INSTR(table_comment,$innodb_pattern) = 0
|
||||
AND INSTR(table_comment,$ndb_pattern) = 0,
|
||||
LENGTH(table_comment),
|
||||
INSTR(table_comment,$innodb_pattern)
|
||||
+ INSTR(table_comment,$ndb_pattern) - 1))
|
||||
AS "user_comment",
|
||||
'-----------------------------------------------------' AS "Separator"
|
||||
FROM information_schema.tables
|
||||
$my_where
|
||||
ORDER BY table_schema,table_name;
|
||||
--horizontal_results
|
||||
|
21
mysql-test/suite/funcs_1/include/cleanup.inc
Normal file
21
mysql-test/suite/funcs_1/include/cleanup.inc
Normal file
@ -0,0 +1,21 @@
|
||||
# suite/funcs_1/include/cleanup.inc
|
||||
#
|
||||
# Remove all objects created by sourcing
|
||||
# suite/funcs_1/datadict/datadict_load.inc
|
||||
#
|
||||
DROP DATABASE test1;
|
||||
DROP DATABASE test4;
|
||||
DROP TABLE test.t1;
|
||||
DROP TABLE test.t2;
|
||||
DROP TABLE test.t3;
|
||||
DROP TABLE test.t4;
|
||||
DROP TABLE test.t7;
|
||||
DROP TABLE test.t8;
|
||||
DROP TABLE test.t9;
|
||||
DROP TABLE test.t10;
|
||||
DROP TABLE test.t11;
|
||||
DROP TABLE test.tb1;
|
||||
DROP TABLE test.tb2;
|
||||
DROP TABLE test.tb3;
|
||||
DROP TABLE test.tb4;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user