Commit 0eecb473 authored by unknown's avatar unknown

Added support for hex strings to mysqlimport

A lot of new tests to mysqltest
Fixed bug with BDB tables and autocommit


BitKeeper/deleted/.del-delete.test~389410e29f2cebe5:
  Delete: mysql-test/t/delete.test
BitKeeper/deleted/.del-delete.result~e866a6678e29f186:
  Delete: mysql-test/r/delete.result
BitKeeper/deleted/.del-sel000014.test~74cb8c70f1d73fcc:
  Delete: mysql-test/t/sel000014.test
BitKeeper/deleted/.del-sel000015.test~7442bf9cbc96fe07:
  Delete: mysql-test/t/sel000015.test
BitKeeper/deleted/.del-sel000016.test~f495235f14c47ec:
  Delete: mysql-test/t/sel000016.test
BitKeeper/deleted/.del-sel000017.test~7c39f2b45a6aa780:
  Delete: mysql-test/t/sel000017.test
BitKeeper/deleted/.del-sel000018.test~16207f3ad74de75e:
  Delete: mysql-test/t/sel000018.test
BitKeeper/deleted/.del-sel000014.result~fc8de0ec89d9e35:
  Delete: mysql-test/r/sel000014.result
BitKeeper/deleted/.del-sel000015.result~cadbc52051d47bac:
  Delete: mysql-test/r/sel000015.result
BitKeeper/deleted/.del-sel000016.result~6177851869bd5b07:
  Delete: mysql-test/r/sel000016.result
BitKeeper/deleted/.del-sel000017.result~84ebf147850ff31c:
  Delete: mysql-test/r/sel000017.result
BitKeeper/deleted/.del-sel000018.result~562ac9094cf53aba:
  Delete: mysql-test/r/sel000018.result
BitKeeper/deleted/.del-sel000005.test~982fde89a4d6d886:
  Delete: mysql-test/t/sel000005.test
BitKeeper/deleted/.del-sel000006.test~291cc6c8d85e51df:
  Delete: mysql-test/t/sel000006.test
BitKeeper/deleted/.del-sel000005.result~d5410bb765199cc5:
  Delete: mysql-test/r/sel000005.result
BitKeeper/deleted/.del-sel000006.result~d38004d1acfc11a5:
  Delete: mysql-test/r/sel000006.result
BitKeeper/deleted/.del-sel000004.test~daf9ad4a1a31cd3c:
  Delete: mysql-test/t/sel000004.test
BitKeeper/deleted/.del-sel000007.test~f431e4f4739a24c3:
  Delete: mysql-test/t/sel000007.test
BitKeeper/deleted/.del-sel000008.test~b338ef585cadf7ae:
  Delete: mysql-test/t/sel000008.test
BitKeeper/deleted/.del-sel000009.test~a455c38f5c942cd1:
  Delete: mysql-test/t/sel000009.test
BitKeeper/deleted/.del-sel000010.test~ca07085ae92255f1:
  Delete: mysql-test/t/sel000010.test
BitKeeper/deleted/.del-sel000011.test~c2a971726c9d18d6:
  Delete: mysql-test/t/sel000011.test
BitKeeper/deleted/.del-sel000012.test~ae64bff363c42e92:
  Delete: mysql-test/t/sel000012.test
BitKeeper/deleted/.del-sel000013.test~ce8aa504ba4f74ba:
  Delete: mysql-test/t/sel000013.test
BitKeeper/deleted/.del-sel000019.test~8fd63c8dc6be8dbc:
  Delete: mysql-test/t/sel000019.test
BitKeeper/deleted/.del-sel000020.test~c5758ad18a6dff1e:
  Delete: mysql-test/t/sel000020.test
BitKeeper/deleted/.del-sel000021.test~94dd47de2872264a:
  Delete: mysql-test/t/sel000021.test
BitKeeper/deleted/.del-sel000022.test~6e3e5435e66875e9:
  Delete: mysql-test/t/sel000022.test
BitKeeper/deleted/.del-sel000023.test~7bdfcfaa278f837d:
  Delete: mysql-test/t/sel000023.test
BitKeeper/deleted/.del-sel000024.test~849f47e6cbdc4fe3:
  Delete: mysql-test/t/sel000024.test
BitKeeper/deleted/.del-sel000025.test~65b32b4b67e4c77:
  Delete: mysql-test/t/sel000025.test
BitKeeper/deleted/.del-sel000026.test~d8aa2d614f23b1:
  Delete: mysql-test/t/sel000026.test
BitKeeper/deleted/.del-sel000027.test~ab44bb57a580de9:
  Delete: mysql-test/t/sel000027.test
BitKeeper/deleted/.del-sel000028.test~db9bfc0a808fb629:
  Delete: mysql-test/t/sel000028.test
BitKeeper/deleted/.del-sel000029.test~6aae34dbb3ee86d9:
  Delete: mysql-test/t/sel000029.test
BitKeeper/deleted/.del-sel000030.test~a29683eac3e7b706:
  Delete: mysql-test/t/sel000030.test
BitKeeper/deleted/.del-sel000004.result~1f8d1265be521c17:
  Delete: mysql-test/r/sel000004.result
BitKeeper/deleted/.del-sel000007.result~df455e49f9727c4f:
  Delete: mysql-test/r/sel000007.result
BitKeeper/deleted/.del-sel000008.result~67a459ff62c84d6a:
  Delete: mysql-test/r/sel000008.result
BitKeeper/deleted/.del-sel000009.result~e042b35ab131fb3:
  Delete: mysql-test/r/sel000009.result
BitKeeper/deleted/.del-sel000010.result~eee5b9631a1e0066:
  Delete: mysql-test/r/sel000010.result
BitKeeper/deleted/.del-sel000011.result~6907fe356973ed25:
  Delete: mysql-test/r/sel000011.result
BitKeeper/deleted/.del-sel000012.result~be18991fc28954c2:
  Delete: mysql-test/r/sel000012.result
BitKeeper/deleted/.del-sel000013.result~513389e06c96af73:
  Delete: mysql-test/r/sel000013.result
BitKeeper/deleted/.del-sel000019.result~2870fe1c4998d929:
  Delete: mysql-test/r/sel000019.result
BitKeeper/deleted/.del-sel000020.result~faa670294ef5fa91:
  Delete: mysql-test/r/sel000020.result
BitKeeper/deleted/.del-sel000021.result~8f0ce4ec26e0c21d:
  Delete: mysql-test/r/sel000021.result
BitKeeper/deleted/.del-sel000022.result~34828a43753ee767:
  Delete: mysql-test/r/sel000022.result
BitKeeper/deleted/.del-sel000023.result~13e112d77573bf17:
  Delete: mysql-test/r/sel000023.result
BitKeeper/deleted/.del-sel000024.result~b10d449624f48d07:
  Delete: mysql-test/r/sel000024.result
BitKeeper/deleted/.del-sel000025.result~f31e08fcca805f35:
  Delete: mysql-test/r/sel000025.result
BitKeeper/deleted/.del-sel000026.result~854fa951666b7982:
  Delete: mysql-test/r/sel000026.result
BitKeeper/deleted/.del-sel000027.result~cfd73fe738f27da:
  Delete: mysql-test/r/sel000027.result
BitKeeper/deleted/.del-sel000028.result~13ff5add6ac24908:
  Delete: mysql-test/r/sel000028.result
BitKeeper/deleted/.del-sel000029.result~c6d071781808aa26:
  Delete: mysql-test/r/sel000029.result
BitKeeper/deleted/.del-sel000030.result~98d496948e15064d:
  Delete: mysql-test/r/sel000030.result
BitKeeper/deleted/.del-alt000001.test~633aed61c4bad94c:
  Delete: mysql-test/t/alt000001.test
BitKeeper/deleted/.del-alt000001.result~393103dbf15f35c9:
  Delete: mysql-test/r/alt000001.result
BitKeeper/deleted/.del-mrg000001.dummy.result~bf7e6d609f22b897:
  Delete: mysql-test/r/mrg000001.dummy.result
BitKeeper/deleted/.del-mrg000001.result~db2ef2e717ab8332:
  Delete: mysql-test/r/mrg000001.result
BitKeeper/deleted/.del-mrg000002.result~745be0854aaaaf5e:
  Delete: mysql-test/r/mrg000002.result
BitKeeper/deleted/.del-mrg000001.test~e0327f9d1e6cb4e:
  Delete: mysql-test/t/mrg000001.test
BitKeeper/deleted/.del-mrg000002.test~16b3a176adc0f311:
  Delete: mysql-test/t/mrg000002.test
Docs/manual.texi:
  Changelog
client/mysqlimport.c:
  Added support for hex strings
client/mysqltest.c:
  Added linenumbers in output
  Only allow '{' first on a row (Conflicts with ODBC {} syntax).
  Handle bigger queries.
  Handle double ''
  Truncate result files.
mysql-test/mysql-test-run.sh:
  Added --verbose
  cleanup
mysql-test/r/bdb.result:
  Updating of test
mysql-test/r/func_crypt.result:
  Updating of test
mysql-test/r/func_equal.result:
  Updating of test
mysql-test/r/func_str.result:
  Updating of test
mysql-test/r/ins000001.result:
  Updating of test
mysql-test/t/bdb.test:
  Updating of test
mysql-test/t/err000001.test:
  Updating of test
mysql-test/t/func_crypt.test:
  Updating of test
mysql-test/t/func_equal.test:
  Updating of test
mysql-test/t/func_str.test:
  Updating of test
mysql-test/t/ins000001.test:
  Updating of test
sql/gen_lex_hash.cc:
  Smaller table
sql/handler.cc:
  Fixed bug in auto_commit
parent 6cf1d680
...@@ -40050,6 +40050,9 @@ though, so Version 3.23 is not released as a stable version yet. ...@@ -40050,6 +40050,9 @@ though, so Version 3.23 is not released as a stable version yet.
@appendixsubsec Changes in release 3.23.30 @appendixsubsec Changes in release 3.23.30
@itemize @bullet @itemize @bullet
@item @item
Allow hex constants in the @code{--fields-*-by} and
@code{--lines-terminated-by} options to @code{mysqldump}. By Paul DuBois.
@item
Added option @code{--safe-show-databases}. Added option @code{--safe-show-databases}.
@item @item
Added @code{have_bdb}, @code{have_gemini}, @code{have_innobase}, Added @code{have_bdb}, @code{have_gemini}, @code{have_innobase},
...@@ -456,9 +456,14 @@ static char *add_load_option(char *ptr,const char *object,const char *statement) ...@@ -456,9 +456,14 @@ static char *add_load_option(char *ptr,const char *object,const char *statement)
{ {
if (object) if (object)
{ {
ptr= strxmov(ptr," ",statement," '",NullS); if (!strncasecmp(object,"0x",2)) /* hex constant; don't escape */
ptr= field_escape(ptr,object,(uint) strlen(object)); ptr= strxmov(ptr," ",statement," ",object,NullS);
*ptr++= '\''; else /* char constant; escape */
{
ptr= strxmov(ptr," ",statement," '",NullS);
ptr= field_escape(ptr,object,(uint) strlen(object));
*ptr++= '\'';
}
} }
return ptr; return ptr;
} }
......
...@@ -20,10 +20,10 @@ ...@@ -20,10 +20,10 @@
* Written by: * Written by:
* Sasha Pachev <sasha@mysql.com> * Sasha Pachev <sasha@mysql.com>
* Matt Wagner <matt@mysql.com> * Matt Wagner <matt@mysql.com>
* * Monty
**/ **/
#define MTEST_VERSION "1.1" #define MTEST_VERSION "1.2"
#include "global.h" #include "global.h"
#include "my_sys.h" #include "my_sys.h"
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
#include <unistd.h> #include <unistd.h>
#include <errno.h> #include <errno.h>
#define MAX_QUERY 16384 #define MAX_QUERY 65536
#define PAD_SIZE 128 #define PAD_SIZE 128
#define MAX_CONS 1024 #define MAX_CONS 1024
#define MAX_INCLUDE_DEPTH 16 #define MAX_INCLUDE_DEPTH 16
...@@ -51,15 +51,17 @@ ...@@ -51,15 +51,17 @@
#define BLOCK_STACK_DEPTH 32 #define BLOCK_STACK_DEPTH 32
int record = 0, verbose = 0, silent = 0; int record = 0, verbose = 0, silent = 0;
const char* record_mode = "r";
static char *db = 0, *pass=0; static char *db = 0, *pass=0;
const char* user = 0, *host = 0, *unix_sock = 0; const char* user = 0, *host = 0, *unix_sock = 0;
int port = 0; int port = 0;
static uint start_lineno, *lineno;
static const char *load_default_groups[]= { "mysqltest","client",0 }; static const char *load_default_groups[]= { "mysqltest","client",0 };
FILE* file_stack[MAX_INCLUDE_DEPTH]; FILE* file_stack[MAX_INCLUDE_DEPTH];
FILE** cur_file; FILE** cur_file;
FILE** file_stack_end; FILE** file_stack_end;
uint lineno_stack[MAX_INCLUDE_DEPTH];
int block_stack[BLOCK_STACK_DEPTH]; int block_stack[BLOCK_STACK_DEPTH];
int *cur_block, *block_stack_end; int *cur_block, *block_stack_end;
...@@ -182,7 +184,7 @@ static void verbose_msg(const char* fmt, ...) ...@@ -182,7 +184,7 @@ static void verbose_msg(const char* fmt, ...)
va_start(args, fmt); va_start(args, fmt);
fprintf(stderr, "%s: ", my_progname); fprintf(stderr, "%s: At line %u: ", my_progname, start_lineno);
vfprintf(stderr, fmt, args); vfprintf(stderr, fmt, args);
fprintf(stderr, "\n"); fprintf(stderr, "\n");
va_end(args); va_end(args);
...@@ -365,6 +367,7 @@ int open_file(const char* name) ...@@ -365,6 +367,7 @@ int open_file(const char* name)
die("Source directives are nesting too deep"); die("Source directives are nesting too deep");
if (!(*cur_file = my_fopen(name, O_RDONLY, MYF(MY_WME)))) if (!(*cur_file = my_fopen(name, O_RDONLY, MYF(MY_WME))))
die("Could not read '%s': errno %d\n", name, errno); die("Could not read '%s': errno %d\n", name, errno);
*++lineno=1;
return 0; return 0;
} }
...@@ -751,6 +754,7 @@ int read_line(char* buf, int size) ...@@ -751,6 +754,7 @@ int read_line(char* buf, int size)
R_ESC_SLASH_Q1, R_ESC_SLASH_Q2, R_ESC_SLASH_Q1, R_ESC_SLASH_Q2,
R_Q2, R_COMMENT, R_LINE_START} state = R_LINE_START; R_Q2, R_COMMENT, R_LINE_START} state = R_LINE_START;
start_lineno= *lineno;
for (; p < buf_end ;) for (; p < buf_end ;)
{ {
no_save = 0; no_save = 0;
...@@ -764,15 +768,15 @@ int read_line(char* buf, int size) ...@@ -764,15 +768,15 @@ int read_line(char* buf, int size)
else else
{ {
cur_file--; cur_file--;
lineno--;
continue; continue;
} }
} }
switch(state) { switch(state) {
case R_NORMAL: case R_NORMAL:
if (c == ';' || c == '{') /* '{' allows some interesting syntax /* Only accept '{' in the beginning of a line */
* but we don't care, as long as the if (c == ';')
* correct sytnax gets parsed right */
{ {
*p = 0; *p = 0;
return 0; return 0;
...@@ -782,13 +786,16 @@ int read_line(char* buf, int size) ...@@ -782,13 +786,16 @@ int read_line(char* buf, int size)
else if (c == '"') else if (c == '"')
state = R_Q2; state = R_Q2;
else if (c == '\n') else if (c == '\n')
{
state = R_LINE_START; state = R_LINE_START;
(*lineno)++;
}
break; break;
case R_COMMENT: case R_COMMENT:
if (c == '\n') if (c == '\n')
{ {
*p=0; *p=0;
(*lineno)++;
return 0; return 0;
} }
break; break;
...@@ -798,7 +805,11 @@ int read_line(char* buf, int size) ...@@ -798,7 +805,11 @@ int read_line(char* buf, int size)
state = R_COMMENT; state = R_COMMENT;
} }
else if (isspace(c)) else if (isspace(c))
{
if (c == '\n')
start_lineno= ++*lineno; /* Query hasn't started yet */
no_save = 1; no_save = 1;
}
else if (c == '}') else if (c == '}')
{ {
*buf++ = '}'; *buf++ = '}';
...@@ -828,6 +839,8 @@ int read_line(char* buf, int size) ...@@ -828,6 +839,8 @@ int read_line(char* buf, int size)
} }
if (c != '\'') if (c != '\'')
state = R_NORMAL; state = R_NORMAL;
else
state = R_Q1;
break; break;
case R_ESC_SLASH_Q1: case R_ESC_SLASH_Q1:
state = R_Q1; state = R_Q1;
...@@ -847,6 +860,8 @@ int read_line(char* buf, int size) ...@@ -847,6 +860,8 @@ int read_line(char* buf, int size)
} }
if (c != '"') if (c != '"')
state = R_NORMAL; state = R_NORMAL;
else
state = R_Q2;
break; break;
case R_ESC_SLASH_Q2: case R_ESC_SLASH_Q2:
state = R_Q2; state = R_Q2;
...@@ -860,12 +875,14 @@ int read_line(char* buf, int size) ...@@ -860,12 +875,14 @@ int read_line(char* buf, int size)
return feof(*cur_file); return feof(*cur_file);
} }
static char read_query_buf[MAX_QUERY];
int read_query(struct query** q_ptr) int read_query(struct query** q_ptr)
{ {
char buf[MAX_QUERY]; char* p = read_query_buf, * p1 ;
char* p = buf,* p1 ;
int c, expected_errno; int c, expected_errno;
struct query* q; struct query* q;
if (parser.current_line < parser.read_lines) if (parser.current_line < parser.read_lines)
{ {
get_dynamic(&q_lines, (gptr)q_ptr, parser.current_line) ; get_dynamic(&q_lines, (gptr)q_ptr, parser.current_line) ;
...@@ -882,7 +899,7 @@ int read_query(struct query** q_ptr) ...@@ -882,7 +899,7 @@ int read_query(struct query** q_ptr)
q->first_word_len = 0; q->first_word_len = 0;
q->expected_errno = 0; q->expected_errno = 0;
q->type = Q_UNKNOWN; q->type = Q_UNKNOWN;
if (read_line(buf, sizeof(buf))) if (read_line(read_query_buf, sizeof(read_query_buf)))
return 1; return 1;
if (*p == '#') if (*p == '#')
...@@ -961,7 +978,7 @@ static void print_version(void) ...@@ -961,7 +978,7 @@ static void print_version(void)
void usage() void usage()
{ {
print_version(); print_version();
printf("MySQL AB, by Sasha & Matt\n"); printf("MySQL AB, by Sasha, Matt & Monty\n");
printf("This software comes with ABSOLUTELY NO WARRANTY\n\n"); printf("This software comes with ABSOLUTELY NO WARRANTY\n\n");
printf("Runs a test against the mysql server and compares output with a results file.\n\n"); printf("Runs a test against the mysql server and compares output with a results file.\n\n");
printf("Usage: %s [OPTIONS] [database] < test_file\n", my_progname); printf("Usage: %s [OPTIONS] [database] < test_file\n", my_progname);
...@@ -975,7 +992,7 @@ void usage() ...@@ -975,7 +992,7 @@ void usage()
-P, --port=... Port number to use for connection.\n\ -P, --port=... Port number to use for connection.\n\
-S, --socket=... Socket file to use for connection.\n\ -S, --socket=... Socket file to use for connection.\n\
-r, --record Record output of test_file into result file.\n\ -r, --record Record output of test_file into result file.\n\
-R, --result-file=... Store result in this file\n\ -R, --result-file=... Read/Store result from/in this file\n\
-v, --verbose Write more.\n\ -v, --verbose Write more.\n\
-q, --quiet, --silent Suppress all normal output.\n\ -q, --quiet, --silent Suppress all normal output.\n\
-V, --version Output version information and exit.\n\n"); -V, --version Output version information and exit.\n\n");
...@@ -997,7 +1014,6 @@ int parse_args(int argc, char **argv) ...@@ -997,7 +1014,6 @@ int parse_args(int argc, char **argv)
break; break;
case 'r': case 'r':
record = 1; record = 1;
record_mode = "w";
break; break;
case 'u': case 'u':
user = optarg; user = optarg;
...@@ -1069,7 +1085,8 @@ char* safe_str_append(char* buf, const char* str, int size) ...@@ -1069,7 +1085,8 @@ char* safe_str_append(char* buf, const char* str, int size)
void str_to_file(const char* fname, char* str, int size) void str_to_file(const char* fname, char* str, int size)
{ {
int fd; int fd;
if ((fd = my_open(fname, O_WRONLY|O_CREAT, MYF(MY_WME | MY_FFNF))) < 0) if ((fd = my_open(fname, O_WRONLY | O_CREAT | O_TRUNC,
MYF(MY_WME | MY_FFNF))) < 0)
die("Could not open %s: errno = %d", fname, errno); die("Could not open %s: errno = %d", fname, errno);
if (my_write(fd, (byte*)str, size, MYF(MY_WME|MY_FNABP))) if (my_write(fd, (byte*)str, size, MYF(MY_WME|MY_FNABP)))
die("write failed"); die("write failed");
...@@ -1079,8 +1096,6 @@ void str_to_file(const char* fname, char* str, int size) ...@@ -1079,8 +1096,6 @@ void str_to_file(const char* fname, char* str, int size)
void reject_dump(const char* record_file, char* buf, int size) void reject_dump(const char* record_file, char* buf, int size)
{ {
char reject_file[FN_REFLEN]; char reject_file[FN_REFLEN];
char* p;
if (strlen(record_file) >= FN_REFLEN-8) if (strlen(record_file) >= FN_REFLEN-8)
die("too long path name for reject"); die("too long path name for reject");
strmov(strmov(reject_file, record_file),".reject"); strmov(strmov(reject_file, record_file),".reject");
...@@ -1111,7 +1126,8 @@ int run_query(MYSQL* mysql, struct query* q) ...@@ -1111,7 +1126,8 @@ int run_query(MYSQL* mysql, struct query* q)
if (q->require_file) if (q->require_file)
abort_not_supported_test(); abort_not_supported_test();
if (q->abort_on_error) if (q->abort_on_error)
die("query '%s' failed: %s", q->q, mysql_error(mysql)); die("At line %u: query '%s' failed: %d: %s", start_lineno, q->q,
mysql_errno(mysql), mysql_error(mysql));
else else
{ {
if (q->expected_errno) if (q->expected_errno)
...@@ -1123,7 +1139,8 @@ int run_query(MYSQL* mysql, struct query* q) ...@@ -1123,7 +1139,8 @@ int run_query(MYSQL* mysql, struct query* q)
goto end; goto end;
} }
verbose_msg("query '%s' failed: %s", q->q, mysql_error(mysql)); verbose_msg("query '%s' failed: %d: %s", q->q, mysql_errno(mysql),
mysql_error(mysql));
/* if we do not abort on error, failure to run the query does /* if we do not abort on error, failure to run the query does
not fail the whole test case not fail the whole test case
*/ */
...@@ -1145,10 +1162,12 @@ int run_query(MYSQL* mysql, struct query* q) ...@@ -1145,10 +1162,12 @@ int run_query(MYSQL* mysql, struct query* q)
if (q->require_file) if (q->require_file)
abort_not_supported_test(); abort_not_supported_test();
if (q->abort_on_error) if (q->abort_on_error)
die("failed in mysql_store_result for query '%s'", q->q); die("At line %u: Failed in mysql_store_result for query '%s' (%d)",
start_lineno, q->q, mysql_errno(mysql));
else else
{ {
verbose_msg("failed in mysql_store_result for query '%s'", q->q); verbose_msg("failed in mysql_store_result for query '%s' (%d)", q->q,
mysql_errno(mysql));
error = 1; error = 1;
goto end; goto end;
} }
...@@ -1193,7 +1212,7 @@ int run_query(MYSQL* mysql, struct query* q) ...@@ -1193,7 +1212,7 @@ int run_query(MYSQL* mysql, struct query* q)
if (record) if (record)
{ {
if (!q->record_file[0] && !result_file) if (!q->record_file[0] && !result_file)
die("Missing result file"); die("At line %u: Missing result file", start_lineno);
if (!result_file) if (!result_file)
str_to_file(q->record_file, ds->str, ds->len); str_to_file(q->record_file, ds->str, ds->len);
} }
...@@ -1247,6 +1266,7 @@ int main(int argc, char** argv) ...@@ -1247,6 +1266,7 @@ int main(int argc, char** argv)
memset(file_stack, 0, sizeof(file_stack)); memset(file_stack, 0, sizeof(file_stack));
file_stack_end = file_stack + MAX_INCLUDE_DEPTH; file_stack_end = file_stack + MAX_INCLUDE_DEPTH;
cur_file = file_stack; cur_file = file_stack;
lineno = lineno_stack;
init_dynamic_array(&q_lines, sizeof(struct query*), INIT_Q_LINES, init_dynamic_array(&q_lines, sizeof(struct query*), INIT_Q_LINES,
INIT_Q_LINES); INIT_Q_LINES);
memset(block_stack, 0, sizeof(block_stack)); memset(block_stack, 0, sizeof(block_stack));
...@@ -1256,7 +1276,7 @@ int main(int argc, char** argv) ...@@ -1256,7 +1276,7 @@ int main(int argc, char** argv)
parse_args(argc, argv); parse_args(argc, argv);
if (!*cur_file) if (!*cur_file)
*cur_file = stdin; *cur_file = stdin;
*lineno=1;
if (!( mysql_init(&cur_con->mysql))) if (!( mysql_init(&cur_con->mysql)))
die("Failed in mysql_init()"); die("Failed in mysql_init()");
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
DB=test DB=test
DBUSER=test DBUSER=test
DBPASSWD= DBPASSWD=
VERBOSE=""
# Are we on source or binary distribution? # Are we on source or binary distribution?
...@@ -140,6 +141,7 @@ while test $# -gt 0; do ...@@ -140,6 +141,7 @@ while test $# -gt 0; do
case "$1" in case "$1" in
--force ) FORCE=1 ;; --force ) FORCE=1 ;;
--record ) RECORD=1 ;; --record ) RECORD=1 ;;
--verbose) MYSQL_TEST="$MYSQL_TEST -v";;
--gcov ) --gcov )
if [ x$BINARY_DIST = x1 ] ; then if [ x$BINARY_DIST = x1 ] ; then
echo "Cannot do coverage test without the source - please use source dist" echo "Cannot do coverage test without the source - please use source dist"
...@@ -447,7 +449,7 @@ run_testcase () ...@@ -447,7 +449,7 @@ run_testcase ()
< $tf 2> $TIMEFILE` < $tf 2> $TIMEFILE`
res=$? res=$?
if [ $res != 1 ]; then if [ $res == 0 ]; then
mytime=`$CAT $TIMEFILE | $TR '\n' '-'` mytime=`$CAT $TIMEFILE | $TR '\n' '-'`
USERT=`$ECHO $mytime | $CUT -d - -f 2 | $CUT -d ' ' -f 2` USERT=`$ECHO $mytime | $CUT -d - -f 2 | $CUT -d ' ' -f 2`
...@@ -503,7 +505,7 @@ run_testcase () ...@@ -503,7 +505,7 @@ run_testcase ()
[ "$DO_GCOV" ] && gcov_prepare [ "$DO_GCOV" ] && gcov_prepare
echo "Installing test databases" echo "Installing test databases"
mysql_install_db mysql_install_db
#do not automagically start deamons if we are in gdb or running only one test #do not automagically start deamons if we are in gdb or running only one test
...@@ -546,7 +548,7 @@ fi ...@@ -546,7 +548,7 @@ fi
$ECHO $DASH72 $ECHO $DASH72
$ECHO $ECHO
$ECHO "Ending Tests for MySQL daemon" $ECHO "Ending Tests for MySQL daemon"
$RM $TIMEFILE $RM -f $TIMEFILE
if [ -z "$DO_GDB" ] ; if [ -z "$DO_GDB" ] ;
then then
......
bandID payoutID new_col
6 1 NULL
3 4 NULL
1 6 NULL
2 6 NULL
4 9 NULL
5 10 NULL
7 12 NULL
8 12 NULL
bandID payoutID new_col
1 6 NULL
2 6 NULL
3 4 NULL
4 9 NULL
5 10 NULL
6 1 NULL
7 12 NULL
8 12 NULL
Field Type Null Key Default Extra Privileges
GROUP_ID int(10) unsigned PRI 0 select,insert,update,references
LANG_ID smallint(5) unsigned PRI 0 select,insert,update,references
NAME char(80) MUL select,insert,update,references
n
3
9
10
12
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
t1.i 1 7 1 1 0 0 4.0000 2.2361 ENUM('1','3','5','7') NOT NULL
t1.j 2 8 1 1 0 0 5.0000 2.2361 ENUM('2','4','6','8') NOT NULL
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
t1.i 1 7 1 1 0 0 4.0000 2.2361 ENUM('1','3','5','7') NOT NULL
t1.j 2 8 1 1 0 0 5.0000 2.2361 ENUM('2','4','6','8') NOT NULL
a b
1 1
3 3
5 5
6 6
a b c
1 1 NULL
3 3 3
5 5 NULL
8 8 8
9 9 9
a b
1 1
5 5
3 3
4 4
6 6
a b c
1 1 NULL
5 5 NULL
3 3 NULL
4 4 NULL
6 6 6
skey sval
1 hello
2 hey
_rowid _rowid skey sval
1 1 1 hello
2 2 2 hey
a b
a 1
a 2
a 3
a 4
a 5
b 2
b 3
b 4
c 1
c 2
c 3
d 1
d 2
d 5
e 1
k 1
ordid ord
1 sdj
2 sdj
ordid ord
1 abc
2 abc
3 abc
1 sdj
2 sdj
3 sdj
1 zzz
...@@ -22,6 +22,383 @@ id code name ...@@ -22,6 +22,383 @@ id code name
7 4 Matt 7 4 Matt
8 1 Sinisa 8 1 Sinisa
12 1 Ralph 12 1 Ralph
id parent_id level
8 102 2
9 102 2
15 102 2
id parent_id level
1001 100 0
1002 101 1
1003 101 1
1004 101 1
1005 101 1
1006 101 1
1007 101 1
1008 102 2
1009 102 2
1015 102 2
1016 103 2
1017 103 2
1018 103 2
1019 103 2
1020 103 2
1021 104 2
1022 104 2
1024 104 2
1025 105 2
1026 105 2
1027 105 2
1028 105 2
1029 105 2
1030 105 2
1031 106 2
1032 106 2
1033 106 2
1034 106 2
1035 106 2
1036 107 2
1037 107 2
1038 107 2
1040 107 2
1157 100 0
1179 105 2
1183 104 2
1193 105 2
1202 107 2
1203 107 2
id parent_id level
1001 100 0
1002 101 1
1003 101 1
1004 101 1
1005 101 1
1006 101 1
1007 101 1
1008 102 2
1010 102 2
1015 102 2
1016 103 2
1017 103 2
1018 103 2
1019 103 2
1020 103 2
1021 104 2
1023 104 2
1024 104 2
1025 105 2
1026 105 2
1027 105 2
1028 105 2
1029 105 2
1030 105 2
1031 106 2
1032 106 2
1033 106 2
1034 106 2
1035 106 2
1036 107 2
1037 107 2
1039 107 2
1041 107 2
1158 100 0
1180 105 2
1184 104 2
1194 105 2
1202 107 2
1204 107 2
id parent_id level
1008 102 2
1015 102 2
1010 102 2
table type possible_keys key key_len ref rows Extra
t1 ref level level 1 const 1 where used; Using index
table type possible_keys key key_len ref rows Extra
t1 ref level level 1 const 1 where used; Using index
table type possible_keys key key_len ref rows Extra
t1 ref level level 1 const 1 where used
level id
1 1002
1 1003
1 1004
1 1005
1 1006
1 1007
level id parent_id
1 1002 101
1 1003 101
1 1004 101
1 1005 101
1 1006 101
1 1007 101
gesuchnr benutzer_id gesuchnr benutzer_id
1 1 1 1
2 1 2 1
a
2
a b
a 1
a 2
a 3
a 4
a 5
b 2
b 3
b 4
c 1
c 2
c 3
d 1
d 2
d 5
e 1
k 1
n after rollback
n after commit
4 after commit
n after commit
4 after commit
5 after commit
n
4
5
6
afterbegin_id afterbegin_nom
1 hamdouni
afterrollback_id afterrollback_nom
afterautocommit0_id afterautocommit0_nom
2 mysql
afterrollback_id afterrollback_nom
id val
id val
pippo 12
id val
ID NAME
1 Jochen
_userid
marc@anyware.co.uk
_userid
marc@anyware.co.uk
user_id name phone ref_email detail
10292 sanjeev 29153373 sansh777@hotmail.com xxx
10292 shirish 2333604 shirish@yahoo.com ddsds
10292 sonali 323232 sonali@bolly.com filmstar
user_id name phone ref_email detail
10292 sanjeev 29153373 sansh777@hotmail.com xxx
10292 shirish 2333604 shirish@yahoo.com ddsds
10292 sonali 323232 sonali@bolly.com filmstar
user_id name phone ref_email detail
10292 sanjeev 29153373 sansh777@hotmail.com xxx
10292 shirish 2333604 shirish@yahoo.com ddsds
10292 sonali 323232 sonali@bolly.com filmstar
10293 shirish 2333604 shirish@yahoo.com ddsds
user_id name phone ref_email detail
10293 shirish 2333604 shirish@yahoo.com ddsds
user_id name phone ref_email detail
10291 sanjeev 29153373 sansh777@hotmail.com xxx
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment
t1 0 PRIMARY 1 a A NULL NULL NULL
t1 0 PRIMARY 2 b A 0 NULL NULL
t1 0 b 1 b A 0 NULL NULL
t1 0 c 1 c A 0 NULL NULL
t1 1 a 1 a A NULL NULL NULL
t1 1 a_2 1 a A NULL NULL NULL
col1 col2
1 1
2 3
3 4
4 4
5 2
col1 col2
1 1
2 3
3 4
4 7
5 2
col1 col2 co3
1 1 0
2 3 0
3 4 0
4 7 0
5 2 0
col1 col2 co3
1 1 0
2 9 0
3 4 0
4 7 0
5 2 0
a b
1 3
2 3
3 3
a b
1 3
2 3
3 3
a b
a b
1 3
2 3
3 3
a b
1 3
2 3
3 3
id ggid email passwd
1 test1 xxx
id ggid email passwd
1 test1 xxx
id ggid email passwd
2 test2 yyy
user_name password subscribed user_id quota weight access_date access_time approved dummy_primary_key
user_0 somepassword N 0 0 0 2000-09-07 23:06:59 2000-09-07 23:06:59 1
user_1 somepassword Y 1 1 1 2000-09-07 23:06:59 2000-09-07 23:06:59 2
user_2 somepassword N 2 2 1.4142135623731 2000-09-07 23:06:59 2000-09-07 23:06:59 3
user_3 somepassword Y 3 3 1.7320508075689 2000-09-07 23:06:59 2000-09-07 23:06:59 4
user_4 somepassword N 4 4 2 2000-09-07 23:06:59 2000-09-07 23:06:59 5
id parent_id level
8 102 2
9 102 2
15 102 2
id parent_id level
1001 100 0
1003 101 1
1004 101 1
1008 102 2
1024 102 2
1017 103 2
1022 104 2
1024 104 2
1028 105 2
1029 105 2
1030 105 2
1031 106 2
1032 106 2
1033 106 2
1203 107 2
1202 107 2
1020 103 2
1157 100 0
1193 105 2
1040 107 2
1002 101 1
1015 102 2
1006 101 1
1034 106 2
1035 106 2
1016 103 2
1007 101 1
1036 107 2
1018 103 2
1026 105 2
1027 105 2
1183 104 2
1038 107 2
1025 105 2
1037 107 2
1021 104 2
1019 103 2
1005 101 1
1179 105 2
id parent_id level
1002 100 0
1004 101 1
1005 101 1
1009 102 2
1025 102 2
1018 103 2
1023 104 2
1025 104 2
1029 105 2
1030 105 2
1031 105 2
1032 106 2
1033 106 2
1034 106 2
1204 107 2
1203 107 2
1021 103 2
1158 100 0
1194 105 2
1041 107 2
1003 101 1
1016 102 2
1007 101 1
1035 106 2
1036 106 2
1017 103 2
1008 101 1
1037 107 2
1019 103 2
1027 105 2
1028 105 2
1184 104 2
1039 107 2
1026 105 2
1038 107 2
1022 104 2
1020 103 2
1006 101 1
1180 105 2
id parent_id level
1009 102 2
1025 102 2
1016 102 2
table type possible_keys key key_len ref rows Extra
t1 ref level level 1 const 1 where used; Using index
level id
1 1004
1 1005
1 1003
1 1007
1 1008
1 1006
level id parent_id
1 1004 101
1 1005 101
1 1003 101
1 1007 101
1 1008 101
1 1006 101
level id
1 1003
1 1004
1 1005
1 1006
1 1007
1 1008
id parent_id level
1002 100 0
1009 102 2
1025 102 2
1018 103 2
1023 104 2
1025 104 2
1029 105 2
1030 105 2
1031 105 2
1032 106 2
1033 106 2
1034 106 2
1204 107 2
1203 107 2
1021 103 2
1158 100 0
1194 105 2
1041 107 2
1016 102 2
1035 106 2
1036 106 2
1017 103 2
1037 107 2
1019 103 2
1027 105 2
1028 105 2
1184 104 2
1039 107 2
1026 105 2
1038 107 2
1022 104 2
1020 103 2
1180 105 2
count(*)
1
0 256 00000000000000065536 2147483647 -2147483648 2147483648 +4294967296
0 256 65536 2147483647 -2147483648 2147483648 4294967296
922337203685477580 92233720368547758000
922337203685477580 92233720368547758080
-922337203685477580 -92233720368547758000
-922337203685477580 -92233720368547758080
9223372036854775807 -009223372036854775808
9223372036854775807 -9223372036854775808
+9999999999999999999 -9999999999999999999
10000000000000000000 -10000000000000000000
a
18446744073709551615
18446744073709551615
name
concat("*",name,"*")
**
**
**
min(name) min(concat("*",name,"*")) max(name) max(concat("*",name,"*"))
** **
name
concat("*",name,"*")
**
**
**
min(name) min(concat("*",name,"*")) max(name) max(concat("*",name,"*"))
** **
name
name
name
a b
hello hello
a b
a b
hello hello
CASE "b" when "a" then 1 when "b" then 2 END
2
CASE "c" when "a" then 1 when "b" then 2 END
NULL
CASE "c" when "a" then 1 when "b" then 2 ELSE 3 END
3
CASE BINARY "b" when "a" then 1 when "B" then 2 WHEN "b" then "ok" END
ok
CASE "b" when "a" then 1 when binary "B" then 2 WHEN "b" then "ok" END
ok
CASE concat("a","b") when concat("ab","") then "a" when "b" then "b" end
a
CASE when 1=0 then "true" else "false" END
false
CASE 1 when 1 then "one" WHEN 2 then "two" ELSE "more" END
one
CASE 2.0 when 1 then "one" WHEN 2.0 then "two" ELSE "more" END
two
(CASE "two" when "one" then "1" WHEN "two" then "2" END) | 0
2
(CASE "two" when "one" then 1.00 WHEN "two" then 2.00 END) +0.0
2.00
case 1/0 when "a" then "true" else "false" END
false
case 1/0 when "a" then "true" END
NULL
(case 1/0 when "a" then "true" END) | 0
NULL
(case 1/0 when "a" then "true" END) + 0.0
NULL
case when 1>0 then "TRUE" else "FALSE" END
TRUE
case when 1<0 then "TRUE" else "FALSE" END
FALSE
1+2/*hello*/+3
6
1
1
1 /*!32301 +1
2
1
1
1--1
2
1 --2
+1
4
1
1
table type possible_keys key key_len ref rows Extra
t1 index PRIMARY PRIMARY 12 NULL 2 where used; Using index
id
000000000001
id
000000000001
isbn city libname a
007 Berkeley Berkeley Public1 1
007 Berkeley Berkeley Public2 1
000 New York New York Public Libra 6
001 New York NYC Lib 1
006 San Fran San Fransisco Public 1
isbn city libname a
007 Berkeley Berkeley Public1 2
000 New York New York Public Libra 2
b
NULL
b
1a20 1e+ 1e+10
1 10000000001
a$1 $b c$
1 2 3
a tmsp
a tmsp
5 19711006010203
6 19711006010203
8 19711006010203
id
NULL
-1
0
1
2
3
4
5
6
7
8
9
10
id facility
NULL NULL
-1
0
1 /L
2 A01
3 ANC
4 F01
5 FBX
6 MT
7 P
8 RV
9 SRV
10 VMT
id-5 facility
NULL NULL
-6
-5
-4 /L
-3 A01
-2 ANC
-1 F01
0 FBX
1 MT
2 P
3 RV
4 SRV
5 VMT
id concat(facility)
NULL NULL
-1
0
1 /L
2 A01
3 ANC
4 F01
5 FBX
6 MT
7 P
8 RV
9 SRV
10 VMT
a max(id) b
10 10 VMT
9 9 SRV
8 8 RV
7 7 P
6 6 MT
5 5 FBX
4 4 F01
3 3 ANC
2 2 A01
1 1 /L
-1 -1
0 0
NULL NULL NULL
grp count(*)
0 7
1 6
FACILITY
NULL
/L
A01
ANC
F01
FBX
MT
P
RV
SRV
VMT
FACILITY
NULL
/L
A01
ANC
F01
FBX
MT
P
RV
SRV
VMT
count(*)
12
count(facility)
12
count(*)
13
count(*)
1
count(*)
0
count(*)
12
count(*)
1
count(*)
12
UserId
UserId
UserId
UserId
b
1
table type possible_keys key key_len ref rows Extra
t3 index a a 4 NULL 6 Using index; Using temporary
t2 index a a 4 NULL 5 Using index; Distinct
t1 eq_ref PRIMARY PRIMARY 4 t2.a 1 where used; Distinct
a
1
table type possible_keys key key_len ref rows Extra
t1 index PRIMARY PRIMARY 4 NULL 2 Using index; Using temporary
t3 ref a a 5 t1.a 12 Using index; Distinct
a
1
2
1
1
name
aa
ab
name
aa
ab
1
1
key_link_id link
NULL NULL
table type possible_keys key key_len ref rows Extra
t1 index id id 4 NULL 2 Using index; Using temporary
t2 index id id 8 NULL 1 Using index; Distinct
t3 index id id 8 NULL 1 Using index; Distinct
j_lj_t2 index id id 4 NULL 2 where used; Using index; Distinct
t2_lj index id id 8 NULL 1 where used; Using index; Distinct
j_lj_t3 index id id 4 NULL 2 where used; Using index; Distinct
t3_lj index id id 8 NULL 1 where used; Using index; Distinct
id
2
count(*)
0
nr b str
nr b str
id str
1 NULL
2 NULL
id str
3 foo
table type possible_keys key key_len ref rows Extra
t1 ref str str 11 const 1 where used
table type possible_keys key key_len ref rows Extra
t1 const str str 11 const 1
table type possible_keys key key_len ref rows Extra
t1 ALL str NULL NULL NULL 4 where used
table type possible_keys key key_len ref rows Extra
t1 const str str 11 const 1
Comment
No tables used
a b
Only MyISAM tables support collections
Full-text indexes are called collections
a b
Full-text indexes are called collections
a b
Full-text indexes are called collections
Only MyISAM tables support collections
visitor_id mts
48985536 20000319013932
173865424 20000318233615
357917728 20000319145027
465931136 20000318160953
1092858576 20000319013445
visitor_id mts
48985536 20000319013932
173865424 20000318233615
357917728 20000319145027
465931136 20000318160953
1092858576 20000319013445
a c sum(a)
1 a 1
2 b 2
3 c 3
4 E 4
5 C 5
6 D 6
a c sum(a)
sum(a)
NULL
a
1
3
6
5
2
4
a
1
3
6
5
2
4
count(distinct a) count(distinct grp)
6 3
count(distinct a) count(distinct grp)
6 3
sum(a) count(a) avg(a) std(a) bit_or(a) bit_and(a) min(a) max(a) min(c) max(c)
21 6 3.5000 1.7078 7 0 1 6 E
grp sum(a) count(a) avg(a) std(a) bit_or(a) bit_and(a) min(a) max(a) min(c) max(c)
NULL 0 0 NULL NULL 0 0 NULL NULL
1 1 1 1.0000 0.0000 1 1 1 1 a a
2 5 2 2.5000 0.5000 3 2 2 3 b c
3 15 3 5.0000 0.8165 7 4 4 6 C E
grp sum
NULL NULL
1 7
2 20
3 44.816496580928
grp a c
NULL NULL
1 2 a
2 5 c
3 9 E
2 3 c
id avg(value1) std(value1)
1 1.000000 0.816497
2 11.000000 0.816497
name avg(value1) std(value1)
Set One 1.000000 0.816497
Set Two 11.000000 0.816497
id avg(rating)
1 3.0000
2 NULL
3 2.0000
count(*)
3
count(*)
1
count(*)
0
count(*)
0
count(a)
1
count(a)
0
count(a)
0
count(b)
2
count(b)
0
count(c)
0
COUNT(i) i COUNT(i)*i
1 1 1
COUNT(i) (i+0) COUNT(i)*(i+0)
1 1 1
sum(num)
147.58
sum(num)
50.15
45.63
51.80
field
field
A
field
A
field
A
NULL
field
NULL
id
2
5
9
a
abc
abcd
a
test
a
test
floor(5.5) floor(-5.5)
5 -6
ceiling(5.5) ceiling(-5.5)
6 -5
truncate(52.64,1) truncate(52.64,2) truncate(52.64,-1) truncate(52.64,-2)
52.6 52.64 50 0
round(5.5) round(-5.5)
6 -6
round(5.64,1) round(5.64,2) round(5.64,-1) round(5.64,-2)
5.6 5.64 10 0
abs(-10) sign(-5) sign(5) sign(0)
10 -1 1 0
log(exp(10)) exp(log(sqrt(10))*2)
10.000000 10.000000
pow(10,log10(10)) power(2,4)
10.000000 16.000000
rand(999999) rand()
0.18435012473199 0.76373626176616
PI() sin(pi()/2) cos(pi()/2) tan(pi()) cot(1) asin(1) acos(0) atan(1)
3.141593 1.000000 0.000000 -0.000000 0.64209262 1.570796 1.570796 0.785398
degrees(pi()) radians(360)
180 6.2831853071796
format(1.5555,0) format(123.5555,1) format(1234.5555,2) format(12345.5555,3) format(123456.5555,4) format(1234567.5555,5) format("12345.2399",2)
2 123.6 1,234.56 12,345.556 123,456.5555 1,234,567.55550 12,345.24
inet_ntoa(inet_aton("255.255.255.255.255.255.255.255"))
255.255.255.255.255.255.255.255
inet_aton("255.255.255.255.255") inet_aton("255.255.1.255") inet_aton("0.1.255")
1099511627775 4294902271 511
inet_ntoa(1099511627775) inet_ntoa(4294902271) inet_ntoa(511)
255.255.255.255.255 255.255.1.255 0.0.1.255
1+1 1-1 1+1*2 8/5 8%5 mod(8,5) mod(8,5)|0 -(1+1)*-2
2 0 3 1.60 3 3 3 4
1 | (1+1) 5 & 3 bit_count(7)
3 1 3
1 << 32 1 << 63 1 << 64 4 >> 2 4 >> 63 1<< 63 >> 60 1 << 32 1 << 63 1 << 64 4 >> 2 4 >> 63 1<< 63 >> 60
4294967296 -9223372036854775808 0 1 0 8 4294967296 -9223372036854775808 0 1 0 8
s1 regexp s2
1
1
1
1
1
1
1
0
0
0
NULL
NULL
NULL
NULL
interval(55,10,20,30,40,50,60,70,80,90,100) interval(3,1,1+1,1+1+1+1) field("IBM","NCA","ICL","SUN","IBM","DIGITAL") field("A","B","C") elt(2,"ONE","TWO","THREE") interval(0,1,2,3,4) elt(1,1,2,3)|0 elt(1,1.1,1.2,1.3)+0
5 2 4 0 TWO 0 1 1.1
find_in_set("b","a,b,c") find_in_set("c","a,b,c") find_in_set("dd","a,bbb,dd") find_in_set("bbb","a,bbb,dd")
2 3 3 2
find_in_set("d","a,b,c") find_in_set("dd","a,bbb,d") find_in_set("bb","a,bbb,dd")
0 0 0
make_set(0,'a','b','c') make_set(-1,'a','b','c') make_set(1,'a','b','c') make_set(2,'a','b','c') make_set(1+2,concat('a','b'),'c')
a,b,c a b ab,c
make_set(NULL,'a','b','c') make_set(1|4,'a',NULL,'c') make_set(1+2,'a',NULL,'c')
NULL a,c a
export_set(9,"Y","N","-",5) export_set(9,"Y","N") export_set(9,"Y","N","")
Y-N-N-Y-N Y,N,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N YNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
elt(2,1) field(NULL,"a","b","c")
NULL 0
find_in_set("","a,b,c") find_in_set("","a,b,c,") find_in_set("",",a,b,c")
0 4 1
find_in_set("abc","abc") find_in_set("ab","abc") find_in_set("abcd","abc")
1 0 0
...@@ -60,3 +60,40 @@ rpad('abcd',1,'ab') lpad('abcd',1,'ab') ...@@ -60,3 +60,40 @@ rpad('abcd',1,'ab') lpad('abcd',1,'ab')
a a a a
LEAST(NULL,'HARRY','HARRIOT',NULL,'HAROLD') GREATEST(NULL,'HARRY','HARRIOT',NULL,'HAROLD') LEAST(NULL,'HARRY','HARRIOT',NULL,'HAROLD') GREATEST(NULL,'HARRY','HARRIOT',NULL,'HAROLD')
HAROLD HARRY HAROLD HARRY
least(1,2,3) | greatest(16,32,8) least(5,4)*1 greatest(-1.0,1.0)*1 least(3,2,1)*1.0 greatest(1,1.1,1.0) least("10",9) greatest("A","B","0")
33 4 1.0 1.0 1.1 9 B
decode(encode(repeat("a",100000),"monty"),"monty")=repeat("a",100000)
1
decode(encode("abcdef","monty"),"monty")="abcdef"
1
reverse("")
insert("aa",100,1,"b") insert("aa",1,3,"b") left("aa",-1) substring("a",1,2)
aa b a
elt(2,1) field(NULL,"a","b","c") reverse("")
NULL 0
locate("a","b",2) locate("","a",1)
0 1
ltrim("a") rtrim("a") trim(BOTH "" from "a") trim(BOTH " " from "a")
a a a a
concat("1","2")|0 concat("1",".5")+0.0
12 1.5
substring_index("www.tcx.se","",3)
length(repeat("a",100000000)) length(repeat("a",1000*64))
NULL 64000
position("0" in "baaa" in (1)) position("0" in "1" in (1,2,3)) position("sql" in ("mysql"))
1 0 3
position(("1" in (1,2,3)) in "01")
2
length(repeat("a",65500)) length(concat(repeat("a",32000),repeat("a",32000))) length(replace("aaaaa","a",concat(repeat("a",10000)))) length(insert(repeat("a",40000),1,30000,repeat("b",50000)))
65500 64000 50000 60000
length(repeat("a",1000000)) length(concat(repeat("a",32000),repeat("a",32000),repeat("a",32000))) length(replace("aaaaa","a",concat(repeat("a",32000)))) length(insert(repeat("a",48000),1,1000,repeat("a",48000)))
1000000 96000 160000 95000
Date Unix
1998-9-16 09:26:00 905927160
1998-9-16 09:26:00 905927160
domain
hello.de
domain
test.de
database() user()
test test@localhost
version()>="3.23.29"
1
0=0 1>0 1>=1 1<0 1<=0 1!=0 strcmp("abc","abcd") strcmp("b","a") strcmp("a","a")
1 1 1 0 0 1 -1 1 0
"a"<"b" "a"<="b" "b">="a" "b">"a" "a"="A" "a"<>"b"
1 1 1 1 1 1
"a "="A" "A "="a" "a " <= "A b"
1 1 1
"abc" like "a%" "abc" not like "%d%" "a%" like "a\%" "abc%" like "a%\%" "abcd" like "a%b_%d" "a" like "%%a" "abcde" like "a%_e" "abc" like "abc%"
1 1 1 1 1 1 1 1
"a" like "%%b" "a" like "%%ab" "ab" like "a\%" "ab" like "_" "ab" like "ab_" "abc" like "%_d" "abc" like "abc%d"
0 0 0 0 0 0 0
'?' like '|%' '?' like '|%' ESCAPE '|' '%' like '|%' '%' like '|%' ESCAPE '|' '%' like '%'
0 0 0 1 1
'abc' like '%c' 'abcabc' like '%c' "ab" like "" "ab" like "a" "ab" like "ab"
1 1 0 0 1
"Det här är svenska" regexp "h[[:alpha:]]+r" "aba" regexp "^(a|b)*$"
1 1
"aba" regexp concat("^","a")
1
!0 NOT 0=1 !(0=0) 1 AND 1 1 && 0 0 OR 1 1 || NULL 1=1 or 1=1 and 1=0
1 1 0 1 0 1 1 1
IF(0,"ERROR","this") IF(1,"is","ERROR") IF(NULL,"ERROR","a") IF(1,2,3)|0 IF(1,2.0,3.0)+0
this is a 2 2.0
2 between 1 and 3 "monty" between "max" and "my" 2=2 and "monty" between "max" and "my" and 3=3
1 1 1
'b' between 'a' and 'c' 'B' between 'a' and 'c'
1 1
2 in (3,2,5,9,5,1) "monty" in ("david","monty","allan") 1.2 in (1.4,1.2,1.0)
1 1 1
-1.49 or -1.49 0.6 or 0.6
1 1
5 between 0 and 10 between 0 and 1 (5 between 0 and 10) between 0 and 1
0 1
1 and 2 between 2 and 10 2 between 2 and 10 and 1
1 1
1 and 0 or 2 2 or 1 and 0
1 1
from_days(to_days("960101")) to_days(960201)-to_days("19960101") to_days(date_add(curdate(), interval 1 day))-to_days(curdate()) weekday("1997-11-29")
1996-01-01 31 1 5
period_add("9602",-12) period_diff(199505,"9404")
199502 13
now()-now() weekday(curdate())-weekday(now()) unix_timestamp()-unix_timestamp(now())
0 0 0
from_unixtime(unix_timestamp("1994-03-02 10:11:12")) from_unixtime(unix_timestamp("1994-03-02 10:11:12"),"%Y-%m-%d %h:%i:%s") from_unixtime(unix_timestamp("1994-03-02 10:11:12"))+0
1994-03-02 10:11:12 1994-03-02 10:11:12 19940302101112
sec_to_time(9001) sec_to_time(9001)+0 time_to_sec("15:12:22")
02:30:01 23001 54742
now()-curdate()*1000000-curtime()
0
strcmp(current_timestamp(),concat(current_date()," ",current_time()))
0
date_format("1997-01-02 03:04:05", "%M %W %D %Y %y %m %d %h %i %s %w")
January Thursday 2nd 1997 97 01 02 03 04 05 4
date_format("1997-01-02", concat("%M %W %D ","%Y %y %m %d %h %i %s %w"))
January Thursday 2nd 1997 97 01 02 12 00 00 4
dayofmonth("1997-01-02") dayofmonth(19970323)
2 23
month("1997-01-02") year("98-02-03") dayofyear("1997-12-31")
1 1998 365
DAYOFYEAR("1997-03-03") WEEK("1998-03-03") QUARTER(980303)
62 9 1
HOUR("1997-03-03 23:03:22") MINUTE("23:03:22") SECOND(230322)
23 3 22
week(19980101) week(19970101) week(19980101,1) week(19970101,1)
0 1 1 1
week(19981231) week(19971231) week(19981231,1) week(19971231,1)
52 53 53 53
week(19950101) week(19950101,1)
1 0
yearweek('1981-12-31',1) yearweek('1982-01-01',1) yearweek('1982-12-31',1) yearweek('1983-01-01',1)
198153 198153 198252 198252
date_format('1998-12-31','%x-%v') date_format('1999-01-01','%x-%v')
1998-53 1998-53
date_format('1999-12-31','%x-%v') date_format('2000-01-01','%x-%v')
1999-52 1999-52
yearweek('1987-01-01',1) yearweek('1987-01-01')
198701 198653
dayname("1962-03-03") dayname("1962-03-03")+0
Saturday 5
monthname("1972-03-04") monthname("1972-03-04")+0
March 3
time_format(19980131000000,'%H|%I|%k|%l|%i|%p|%r|%S|%T')
00|12|0|12|00|AM|12:00:00 AM|00|00:00:00
time_format(19980131010203,'%H|%I|%k|%l|%i|%p|%r|%S|%T')
01|01|1|1|02|AM|01:02:03 AM|03|01:02:03
time_format(19980131131415,'%H|%I|%k|%l|%i|%p|%r|%S|%T')
13|01|13|1|14|PM|01:14:15 PM|15|13:14:15
time_format(19980131010015,'%H|%I|%k|%l|%i|%p|%r|%S|%T')
01|01|1|1|00|AM|01:00:15 AM|15|01:00:15
date_format(concat('19980131',131415),'%H|%I|%k|%l|%i|%p|%r|%S|%T| %M|%W|%D|%Y|%y|%a|%b|%j|%m|%d|%h|%s|%w')
13|01|13|1|14|PM|01:14:15 PM|15|13:14:15| January|Saturday|31st|1998|98|Sat|Jan|031|01|31|01|15|6
date_format(19980021000000,'%H|%I|%k|%l|%i|%p|%r|%S|%T| %M|%W|%D|%Y|%y|%a|%b|%j|%m|%d|%h|%s|%w')
NULL
date_add("1997-12-31 23:59:59",INTERVAL 1 SECOND)
1998-01-01 00:00:00
date_add("1997-12-31 23:59:59",INTERVAL 1 MINUTE)
1998-01-01 00:00:59
date_add("1997-12-31 23:59:59",INTERVAL 1 HOUR)
1998-01-01 00:59:59
date_add("1997-12-31 23:59:59",INTERVAL 1 DAY)
1998-01-01 23:59:59
date_add("1997-12-31 23:59:59",INTERVAL 1 MONTH)
1998-01-31 23:59:59
date_add("1997-12-31 23:59:59",INTERVAL 1 YEAR)
1998-12-31 23:59:59
date_add("1997-12-31 23:59:59",INTERVAL "1:1" MINUTE_SECOND)
1998-01-01 00:01:00
date_add("1997-12-31 23:59:59",INTERVAL "1:1" HOUR_MINUTE)
1998-01-01 01:00:59
date_add("1997-12-31 23:59:59",INTERVAL "1:1" DAY_HOUR)
1998-01-02 00:59:59
date_add("1997-12-31 23:59:59",INTERVAL "1 1" YEAR_MONTH)
1999-01-31 23:59:59
date_add("1997-12-31 23:59:59",INTERVAL "1:1:1" HOUR_SECOND)
1998-01-01 01:01:00
date_add("1997-12-31 23:59:59",INTERVAL "1 1:1" DAY_MINUTE)
1998-01-02 01:00:59
date_add("1997-12-31 23:59:59",INTERVAL "1 1:1:1" DAY_SECOND)
1998-01-02 01:01:00
date_sub("1998-01-01 00:00:00",INTERVAL 1 SECOND)
1997-12-31 23:59:59
date_sub("1998-01-01 00:00:00",INTERVAL 1 MINUTE)
1997-12-31 23:59:00
date_sub("1998-01-01 00:00:00",INTERVAL 1 HOUR)
1997-12-31 23:00:00
date_sub("1998-01-01 00:00:00",INTERVAL 1 DAY)
1997-12-31 00:00:00
date_sub("1998-01-01 00:00:00",INTERVAL 1 MONTH)
1997-12-01 00:00:00
date_sub("1998-01-01 00:00:00",INTERVAL 1 YEAR)
1997-01-01 00:00:00
date_sub("1998-01-01 00:00:00",INTERVAL "1:1" MINUTE_SECOND)
1997-12-31 23:58:59
date_sub("1998-01-01 00:00:00",INTERVAL "1:1" HOUR_MINUTE)
1997-12-31 22:59:00
date_sub("1998-01-01 00:00:00",INTERVAL "1:1" DAY_HOUR)
1997-12-30 23:00:00
date_sub("1998-01-01 00:00:00",INTERVAL "1 1" YEAR_MONTH)
1996-12-01 00:00:00
date_sub("1998-01-01 00:00:00",INTERVAL "1:1:1" HOUR_SECOND)
1997-12-31 22:58:59
date_sub("1998-01-01 00:00:00",INTERVAL "1 1:1" DAY_MINUTE)
1997-12-30 22:59:00
date_sub("1998-01-01 00:00:00",INTERVAL "1 1:1:1" DAY_SECOND)
1997-12-30 22:58:59
date_add("1997-12-31 23:59:59",INTERVAL 100000 SECOND)
1998-01-02 03:46:39
date_add("1997-12-31 23:59:59",INTERVAL -100000 MINUTE)
1997-10-23 13:19:59
date_add("1997-12-31 23:59:59",INTERVAL 100000 HOUR)
2009-05-29 15:59:59
date_add("1997-12-31 23:59:59",INTERVAL -100000 DAY)
1724-03-17 23:59:59
date_add("1997-12-31 23:59:59",INTERVAL 100000 MONTH)
NULL
date_add("1997-12-31 23:59:59",INTERVAL -100000 YEAR)
NULL
date_add("1997-12-31 23:59:59",INTERVAL "10000:1" MINUTE_SECOND)
1998-01-07 22:40:00
date_add("1997-12-31 23:59:59",INTERVAL "-10000:1" HOUR_MINUTE)
1996-11-10 07:58:59
date_add("1997-12-31 23:59:59",INTERVAL "10000:1" DAY_HOUR)
2025-05-19 00:59:59
date_add("1997-12-31 23:59:59",INTERVAL "-100 1" YEAR_MONTH)
1897-11-30 23:59:59
date_add("1997-12-31 23:59:59",INTERVAL "10000:99:99" HOUR_SECOND)
1999-02-21 17:40:38
date_add("1997-12-31 23:59:59",INTERVAL " -10000 99:99" DAY_MINUTE)
1970-08-11 19:20:59
date_add("1997-12-31 23:59:59",INTERVAL "10000 99:99:99" DAY_SECOND)
2025-05-23 04:40:38
"1997-12-31 23:59:59" + INTERVAL 1 SECOND
1998-01-01 00:00:00
INTERVAL 1 DAY + "1997-12-31"
1998-01-01
"1998-01-01 00:00:00" - INTERVAL 1 SECOND
1997-12-31 23:59:59
date_sub("1998-01-02",INTERVAL 31 DAY)
1997-12-02
date_add("1997-12-31",INTERVAL 1 SECOND)
1997-12-31 00:00:01
date_add("1997-12-31",INTERVAL 1 DAY)
1998-01-01
date_add(NULL,INTERVAL 100000 SECOND)
NULL
date_add("1997-12-31 23:59:59",INTERVAL NULL SECOND)
NULL
date_add("1997-12-31 23:59:59",INTERVAL NULL MINUTE_SECOND)
NULL
date_add("9999-12-31 23:59:59",INTERVAL 1 SECOND)
NULL
date_sub("0000-00-00 00:00:00",INTERVAL 1 SECOND)
NULL
date_add('1998-01-30',Interval 1 month)
1998-02-28
date_add('1998-01-30',Interval '2:1' year_month)
2000-02-29
date_add('1996-02-29',Interval '1' year)
1997-02-28
extract(YEAR FROM "1999-01-02 10:11:12")
1999
extract(YEAR_MONTH FROM "1999-01-02")
199901
extract(DAY FROM "1999-01-02")
2
extract(DAY_HOUR FROM "1999-01-02 10:11:12")
210
extract(DAY_MINUTE FROM "02 10:11:12")
21011
extract(DAY_SECOND FROM "225 10:11:12")
225101112
extract(HOUR FROM "1999-01-02 10:11:12")
10
extract(HOUR_MINUTE FROM "10:11:12")
1011
extract(HOUR_SECOND FROM "10:11:12")
101112
extract(MINUTE FROM "10:11:12")
11
extract(MINUTE_SECOND FROM "10:11:12")
1112
extract(SECOND FROM "1999-01-02 10:11:12")
12
userid MIN(t1.score)
1 1
2 2
3 3
userid MIN(t1.score)
1 1
2 2
userid MIN(t1.score+0.0)
1 1.0
2 2.0
cid CONCAT(firstname, ' ', surname) COUNT(call_id)
cid CONCAT(firstname, ' ', surname) COUNT(call_id)
value description bug_id
BBBBBBBBBBBBB - conversion 9
BBBBBBBBBBBBB - conversion 10
BBBBBBBBBBBBB - generic 7
BBBBBBBBBBBBB - generic 14
BBBBBBBBBBBBB - eeeeeeeee NULL
kkkkkkkkkkk lllllllllll 6
kkkkkkkkkkk lllllllllll 8
kkkkkkkkkkk lllllllllll 12
Test Procedures NULL
Documentation NULL
Host communication NULL
value description COUNT(bug_id)
BBBBBBBBBBBBB - conversion 2
BBBBBBBBBBBBB - eeeeeeeee 0
BBBBBBBBBBBBB - generic 2
Documentation 0
Host communication 0
kkkkkkkkkkk lllllllllll 3
Test Procedures 0
Variable_name Value
have_raid YES
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment
t1 0 PRIMARY 1 a NULL NULL NULL NULL
a b
2 2
3 3
4 4
a b
4 4
a b
2 2
3 3
4 6
a b
1 1
2 2
3 3
4 4
a
869751
802616
a
869751
802616
a
736494
a
736494
869751
a
226312
736494
802616
869751
table type possible_keys key key_len ref rows Extra
t1 range uniq_id uniq_id 4 NULL 4 where used; Using index
x y
1 3
1 1
x y x y
1 1 1 1
2 2 2 2
1 3 1 1
2 4 2 2
2 5 2 2
2 6 2 2
table type possible_keys key key_len ref rows Extra
t1 ALL x NULL NULL NULL 6
t2 eq_ref y y 4 t1.x 1
max(a)
1
a b
1 6
1 5
1 4
1 3
1 2
1 1
a b
1 6
1 5
1 4
1 3
1 2
1 1
1 6
1 5
1 4
1 3
1 2
1 1
max(id)
1
max(id)
2
f1 f2
16 ted
12 ted
12 ted
12 ted
12 ted
id domain id t2
1 mysql.com 1 mysql.com
2 hotmail.com 2 hotmail.com
3 aol.com 3 aol.com
payoutID
1
4
6
9
10
11
12
14
16
19
20
22
id id
107 107
75 75
id count(t2.id)
75 1
107 1
id count(t2.id)
75 1
107 1
grp a c id a c d
1 1 a 1 1 a 1
3 4 E 3 4 A 4
3 5 C 3 5 B 5
3 6 D 3 6 C 6
grp a c id a c d
NULL NULL NULL NULL NULL NULL
1 1 a 1 1 a 1
2 2 b NULL NULL NULL NULL
2 3 c NULL NULL NULL NULL
3 4 E 3 4 A 4
3 5 C 3 5 B 5
3 6 D 3 6 C 6
grp a c id a c d
1 1 a 1 1 a 1
3 4 E 3 4 A 4
3 5 C 3 5 B 5
3 6 D 3 6 C 6
NULL NULL NULL 4 7 D 7
grp a c id a c d
1 1 a 1 1 a 1
3 4 E 3 4 A 4
3 5 C 3 5 B 5
3 6 D 3 6 C 6
NULL NULL NULL 4 7 D 7
grp a c id a c d
1 1 a 1 1 a 1
2 2 b NULL NULL NULL NULL
2 3 c NULL NULL NULL NULL
3 4 E 3 4 A 4
3 5 C 3 5 B 5
3 6 D 3 6 C 6
NULL NULL NULL NULL NULL NULL
grp a c id a c d
1 1 a 1 1 a 1
2 2 b NULL NULL NULL NULL
2 3 c NULL NULL NULL NULL
3 4 E NULL NULL NULL NULL
3 5 C NULL NULL NULL NULL
3 6 D NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL
grp a c id a c d
1 1 a 1 1 a 1
1 1 a 3 4 A 4
2 2 b 3 5 B 5
2 3 c 3 6 C 6
3 4 E NULL NULL NULL NULL
3 5 C 3 6 C 6
3 6 D 4 7 D 7
NULL NULL NULL NULL NULL NULL
grp a c id a c d
1 1 a 1 1 a 1
2 2 b NULL NULL NULL NULL
2 3 c NULL NULL NULL NULL
3 4 E NULL NULL NULL NULL
3 5 C NULL NULL NULL NULL
3 6 D NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL
grp a c id a c d
3 4 E 3 4 A 4
3 5 C 3 5 B 5
3 6 D 3 6 C 6
grp a c id a c d
2 2 b NULL NULL NULL NULL
2 3 c NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL
Comment
Impossible WHERE noticed after reading const tables
table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 7
t2 eq_ref PRIMARY PRIMARY 8 t1.a 1 where used
grp a c id a c d a
1 1 a 1 1 a 1 1
2 2 b NULL NULL NULL NULL NULL
2 3 c NULL NULL NULL NULL NULL
3 4 E 3 4 A 4 4
3 5 C 3 5 B 5 5
3 6 D 3 6 C 6 6
NULL NULL NULL NULL NULL NULL NULL
grp a c id a c d
1 1 a 1 1 a 1
3 4 E 3 4 A 4
3 5 C 3 5 B 5
3 6 D 3 6 C 6
grp a c id a c d
1 1 a 1 1 a 1
3 4 E 3 4 A 4
3 5 C 3 5 B 5
3 6 D 3 6 C 6
grp a c id a c d
1 1 a 1 1 a 1
usr_id uniq_id increment usr2_id c_amount max
3 4 84676 NULL NULL NULL
usr_id uniq_id increment usr2_id c_amount max
3 4 84676 NULL NULL NULL
usr_id uniq_id increment usr2_id c_amount max
3 4 84676 NULL NULL NULL
usr_id uniq_id increment usr2_id c_amount max
3 4 84676 NULL NULL NULL
usr_id uniq_id increment usr2_id c_amount max
3 4 84676 NULL NULL NULL
fill desc_larga_cat cred_total Grup Places PlacesOcupades
10360 asdfggfg 6.0 0 55 0
10360 asdfggfg 6.0 12 333 0
10360 asdfggfg 6.0 33 8 0
10360 asdfggfg 6.0 45 10 0
10360 asdfggfg 6.0 55 2 0
10360 asdfggfg 6.0 7887 85 0
10360 asdfggfg 6.0 32767 7 0
10361 Components i Circuits Electronics I 6.0 30 2 0
10361 Components i Circuits Electronics I 6.0 40 3 0
10362 Laboratori d`Ordinadors 4.5 10 12 0
10362 Laboratori d`Ordinadors 4.5 11 111 0
fill idPla
10360 NULL
10361 NULL
10362 NULL
fill idPla
10360 1
10361 NULL
10362 NULL
name name id
Antonio Paz El Gato 1
Antonio Paz Perrito 2
Lilliana Angelovska NULL NULL
Thimble Smith Happy 3
name name id
Lilliana Angelovska NULL NULL
table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 3
t2 ALL NULL NULL NULL NULL 3 where used; Not exists
table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 3
t2 ALL NULL NULL NULL NULL 3 where used
count(*)
4
name name id
Antonio Paz El Gato 1
Antonio Paz Perrito 2
Lilliana Angelovska NULL NULL
Thimble Smith Happy 3
name name id
Lilliana Angelovska NULL NULL
table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 3
t2 ALL NULL NULL NULL NULL 3 where used; Not exists
table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 3
t2 ALL NULL NULL NULL NULL 3 where used
count(*)
4
name name id id
Antonio Paz El Gato 1 1
Antonio Paz Perrito 2 1
Lilliana Angelovska NULL NULL NULL
Thimble Smith Happy 3 3
name name id id
Antonio Paz El Gato 1 1
Antonio Paz Perrito 2 1
NULL Happy 3 1
NULL El Gato 1 2
NULL Perrito 2 2
NULL Happy 3 2
NULL El Gato 1 3
NULL Perrito 2 3
Thimble Smith Happy 3 3
name name id owner id
Antonio Paz El Gato 1 1 1
Antonio Paz Perrito 2 1 1
Lilliana Angelovska NULL NULL NULL 1
Thimble Smith NULL NULL NULL 1
Antonio Paz NULL NULL NULL 2
Lilliana Angelovska NULL NULL NULL 2
Thimble Smith NULL NULL NULL 2
Antonio Paz NULL NULL NULL 3
Lilliana Angelovska NULL NULL NULL 3
Thimble Smith Happy 3 3 3
id str
4 bar
3 foo
id str
1 NULL
2 NULL
n m o n m o
1 2 11 1 2 3
1 2 7 1 2 3
1 2 9 1 2 3
1 3 9 NULL NULL NULL
n m o n m o
1 2 7 1 2 3
1 2 9 1 2 3
1 3 9 NULL NULL NULL
1 2 11 1 2 3
id2
3
id2
3
color name
red apple
yellow banana
green lime
black grape
blue blueberry
count color
10 green
5 black
15 white
7 green
count color color name
10 green green lime
7 green green lime
5 black black grape
count name
10 lime
7 lime
5 grape
count name
10 lime
7 lime
5 grape
pcode count
kld2000 1
klw1000 0
klw1020 0
klw1500 0
klw2000 0
klw2001 0
klw2002 0
klw2500 0
kmw1000 0
kmw1500 0
kmw2000 0
kmw2001 0
kmw2100 0
kmw3000 0
kmw3200 0
kvw2000 26
kvw2001 0
kvw3000 36
kvw3001 0
kvw3002 0
kvw3500 26
kvw3501 0
kvw3502 0
kvw3800 0
kvw3801 0
kvw3802 0
kvw3900 0
kvw3901 0
kvw3902 0
kvw4000 0
kvw4001 0
kvw4002 0
kvw4200 0
kvw4500 0
kvw5000 0
kvw5001 0
kvw5500 0
kvw5510 0
kvw5600 0
kvw5601 0
kvw6000 2
pcode count
kld2000 1
klw1000 0
klw1020 0
klw1500 0
klw2000 0
klw2001 0
klw2002 0
klw2500 0
kmw1000 0
kmw1500 0
kmw2000 0
kmw2001 0
kmw2100 0
kmw3000 0
kmw3200 0
kvw2000 26
kvw2001 0
kvw3000 36
kvw3001 0
kvw3002 0
kvw3500 26
kvw3501 0
kvw3502 0
kvw3800 0
kvw3801 0
kvw3802 0
kvw3900 0
kvw3901 0
kvw3902 0
kvw4000 0
kvw4001 0
kvw4002 0
kvw4200 0
kvw4500 0
kvw5000 0
kvw5001 0
kvw5500 0
kvw5510 0
kvw5600 0
kvw5601 0
kvw6000 2
id pid rep_del id pid rep_del
1 NULL NULL 2 1 NULL
2 1 NULL NULL NULL NULL
id pid rep_del id pid rep_del
1 NULL NULL 2 1 NULL
2 1 NULL NULL NULL NULL
table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 2
t2 index id id 8 NULL 1 where used; Using index; Not exists
id name id idx
2 no NULL NULL
value
personal employee company
price area type transityes shopsyes schoolsyes petsyes
name author category email password proxy bitmap msg urlscol urlhttp timeout nbcnx creation livinguntil lang type subcat subtype reg scs capacity userISP CCident
patnom patauteur 0 p.favre@cryo-networks.fr NULL NULL #p2sndnq6ae5g1u6t essai
salut scol://195.242.78.119:patauteur.patnom NULL NULL NULL 950036174 -882087474 NULL 3 0 3 1 Pub/patnom/futur_divers.scs NULL pat CC1
name_id name
name_id name
2 [T,U]_axpby
name_id name
name_id name
2 [T,U]_axpby
a b a b
A B A B
b A A B
C c A B
D E A B
a a A B
A B b A
b A b A
C c b A
D E b A
a a b A
A B C c
b A C c
C c C c
D E C c
a a C c
A B D E
b A D E
C c D E
D E D E
a a D E
A B a a
b A a a
C c a a
D E a a
a a a a
table type possible_keys key key_len ref rows Extra
t1 ALL a NULL NULL NULL 5
t2 ALL b NULL NULL NULL 5 where used
a b a b
A B b A
a a b A
A B a a
a a a a
b A A B
C c C c
a b
A B
a a
t1
ABC
t1
t1
AB%
table type possible_keys key key_len ref rows Extra
t1 const PRIMARY PRIMARY 3 const 1
Comment
Impossible WHERE noticed after reading const tables
time date timestamp
12:22:22 1997-02-03 19970102000000
t1.time+0 t1.date+0 t1.timestamp+0 concat(date," ",time)
122222 19970203 19970102000000 1997-02-03 12:22:22
a b
0 0
4 1
2 1
3 1
a b
0 0
4 2
2 2
3 1
a b
0 0
4 2
2 2
3 4
a b
0 0
2 2
3 4
a b
2 2
3 4
a b
1 Testing
2 table
3 t1
1 Testing
2 table
3 t2
a b
3 t1
3 t2
2 table
2 table
1 Testing
1 Testing
table type possible_keys key key_len ref rows Extra
t3 range a a 4 NULL 10 where used
table type possible_keys key key_len ref rows Extra
t3 range a a 4 NULL 10 where used
a b
10 Testing
10 Testing
a b
1 Testing
1 Testing
2 table
2 table
3 t1
3 t2
4 Testing
4 Testing
5 table
5 table
6 t1
6 t2
7 Testing
7 Testing
8 table
8 table
9 t2
9 t2
a b
11 table
11 table
12 t1
12 t1
13 Testing
13 Testing
14 table
14 table
15 t2
15 t2
16 Testing
16 Testing
17 table
17 table
18 t2
18 t2
19 Testing
19 Testing
table type possible_keys key key_len ref rows Extra
t3 index NULL a 4 NULL 1131 Using index
a
699
698
697
696
695
694
693
692
691
690
a
416
415
415
414
414
413
413
412
412
411
c
test1
test1
test1
test2
test2
test2
c
test1
test1
test1
test2
test2
test2
c
c
test1
test1
test1
incr othr
incr othr
1 10
2 24
4 33
3 53
c
incr othr
1 10
2 24
4 33
3 53
NULL NULL isnull(null) isnull(1/0) isnull(1/0 = null) ifnull(null,1) ifnull(null,"TRUE") ifnull("TRUE","ERROR") 1/0 is null 1 is not null
NULL NULL 1 1 1 1 TRUE TRUE 1 1
1 | NULL 1 & NULL 1+NULL 1-NULL
NULL NULL NULL NULL
NULL=NULL NULL<>NULL IFNULL(NULL,1.1)+0 IFNULL(NULL,1) | 0
NULL NULL 1.1 1
strcmp("a",NULL) (1<NULL)+0.0 NULL regexp "a" null like "a%" "a%" like null
NULL NULL NULL NULL NULL
concat("a",NULL) replace(NULL,"a","b") replace("string","i",NULL) replace("string",NULL,"i") insert("abc",1,1,NULL) left(NULL,1)
NULL NULL NULL NULL NULL NULL
repeat("a",0) repeat("ab",5+5) repeat("ab",-1) reverse(NULL)
abababababababababab NULL
field(NULL,"a","b","c")
0
2 between null and 1 2 between 3 AND NULL NULL between 1 and 2 2 between NULL and 3 2 between 1 AND null
0 0 NULL NULL NULL
NULL AND NULL 1 AND NULL NULL AND 1 NULL OR NULL 0 OR NULL NULL OR 0
NULL NULL NULL NULL NULL NULL
(NULL OR NULL) IS NULL
1
NULL AND 0 0 and NULL
NULL 0
inet_ntoa(null) inet_aton(null) inet_aton("122.256") inet_aton("122.226.") inet_aton("")
NULL NULL NULL NULL NULL
x
table type possible_keys key key_len ref rows Extra
t1 ref a a 5 const 3 where used; Using index
table type possible_keys key key_len ref rows Extra
t1 ref a,b a 9 const,const 1 where used; Using index
table type possible_keys key key_len ref rows Extra
t1 ref a,b a 9 const,const 1 where used; Using index
table type possible_keys key key_len ref rows Extra
t1 const a,b a 9 const,const 1
table type possible_keys key key_len ref rows Extra
t1 index NULL a 8 NULL 12 where used; Using index
table type possible_keys key key_len ref rows Extra
t1 range a,b a 9 NULL 3 where used; Using index
table type possible_keys key key_len ref rows Extra
t1 ref a,b b 4 const 2 where used
table type possible_keys key key_len ref rows Extra
t1 ref a,b a 5 const 3 where used; Using index
table type possible_keys key key_len ref rows Extra
t1 range a,b a 9 NULL 2 where used; Using index
table type possible_keys key key_len ref rows Extra
t1 range a a 5 NULL 1 where used; Using index
table type possible_keys key key_len ref rows Extra
t1 range a a 5 NULL 1 where used; Using index
a b
NULL 7
NULL 9
NULL 9
a b
NULL 7
a b
1 1
2 2
a b
1 1
2 2
a b
NULL 9
NULL 9
a b
NULL 7
7 7
a b
NULL 7
NULL 9
NULL 9
table type possible_keys key key_len ref rows Extra
t1 ref a,b a 5 const 3 where used
table type possible_keys key key_len ref rows Extra
t1 ref a,b a 5 const 3 where used
table type possible_keys key key_len ref rows Extra
t1 ref a,b a 5 const 3 where used
table type possible_keys key key_len ref rows Extra
t1 ref a,b a 5 const 1 where used
table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 12 where used
table type possible_keys key key_len ref rows Extra
t1 range a,b a 5 NULL 12 where used
table type possible_keys key key_len ref rows Extra
t1 range a,b a 5 NULL 4 where used
table type possible_keys key key_len ref rows Extra
t1 ref a,b a 5 const 3 where used
table type possible_keys key key_len ref rows Extra
t1 ref a,b a 5 const 3 where used
table type possible_keys key key_len ref rows Extra
t1 range a a 5 NULL 1 where used
table type possible_keys key key_len ref rows Extra
t1 range a,b a 5 NULL 4 where used
table type possible_keys key key_len ref rows Extra
t1 range a a 5 NULL 1 where used
table type possible_keys key key_len ref rows Extra
t1 range b b 12 NULL 1 where used
a b c
NULL 7 0
NULL 9 0
NULL 9 0
a b c
NULL 7 0
a b c
1 1 0
2 2 0
a b c
1 1 0
2 2 0
a b c
NULL 9 0
NULL 9 0
a b c
NULL 7 0
7 7 0
a b c
NULL 7 0
NULL 9 0
NULL 9 0
a b c
6 6 0
{fn length("hello")} 1997-10-20
5 1997-10-20
a b
2 2
a b
Comment
Impossible WHERE noticed after reading const tables
id idservice ordre description
2 1 10 Emettre un appel d'offres
2 3 40000 Crer une fiche de client
2 4 40010 Modifier des clients
2 5 40020 Effacer des clients
2 6 51050 Ajouter un service
2 7 51060 Liste des t2
name
Allan Larsson
David Axmark
Michael Widenius
name
Axmark David
Larsson Allan
Widenius Michael
i
1
2
3
i
1
3
2
i
3
2
1
i
3
2
1
i
2
1
3
id col1 col2
4 1 1
3 1 2
5 1 4
2 2 1
1 2 2
6 2 3
8 2 4
7 3 1
col1
2
2
1
1
1
2
3
2
id
1
1
1
2
2
2
2
3
id
2
2
1
1
1
2
3
2
test
1
2
3
7
a b if(b = 1,i,if(b = 2,v,''))
1 1 50
2 1 25
3 2 123 Park Place
4 2 453 Boardwalk
a b if(b = 1,i,if(b = 2,v,''))
1 1 50
2 1 25
3 2 123 Park Place
4 2 453 Boardwalk
DateOfAction TransactionID
1999-07-18 486
1999-07-19 87
1999-07-19 89
1999-07-19 92
1999-07-19 94
1999-07-27 828
1999-07-27 832
1999-07-27 834
1999-07-27 840
2000-03-27 490
2000-03-28 753
DateOfAction TransactionID
1999-07-19 87
1999-07-19 89
1999-07-19 92
1999-07-19 94
1999-07-18 486
2000-03-27 490
2000-03-28 753
1999-07-27 828
1999-07-27 832
1999-07-27 834
1999-07-27 840
count(*)
450
count(*)
450
count(*)
450
count(*)
450
event_date type event_id
1999-07-10 100100 24
1999-07-11 100100 25
1999-07-13 100600 0
1999-07-13 100600 4
1999-07-13 100600 26
1999-07-14 100600 10
Comment
Impossible WHERE
event_date type event_id
1999-07-10 100100 24
1999-07-11 100100 25
1999-07-13 100600 0
1999-07-13 100600 4
1999-07-13 100600 26
1999-07-14 100600 10
1999-07-15 100600 16
YEAR ISSUE
1999 29
1999 30
1999 31
1999 32
1999 33
1999 34
1999 35
Table Op Msg_type Msg_text
test.t1 check status OK
Table Op Msg_type Msg_text
test.t1 repair status OK
id parent_id level
3 1 1
4 1 1
2 1 1
6 1 1
7 1 1
5 1 1
id parent_id level
2 1 1
3 1 1
4 1 1
5 1 1
6 1 1
7 1 1
Satellite SensorMode FullImageCornersUpperLeftLongitude FullImageCornersUpperRightLongitude FullImageCornersUpperRightLatitude FullImageCornersLowerRightLatitude
OV-3 PAN1 91 -92 40 50
aString
baaa
believe
believe in love
aString
believe in myself
aString
baaa
believe
believe in love
aString
believe in myself
3 table 3
3 table 3
1 table 1
1 table 1
Tables_in_test (t_)
t1
t2
t3
1 table 1
1 table 1
2 table 2
2 table 2
3 table 3
3 table 3
1+1 1-1 1+1*2 8/5 8%5 MOD(8,5) MOD(8,5)|0 -(1+1)*-2 SIGN(-5)
2 0 3 1.60 3 3 3 4 -1
FLOOR(5.5) FLOOR(-5.5) CEILING(5.5) CEILING(-5.5) ROUND(5.5) ROUND(-5.5)
5 -6 6 -5 6 -6
ROUND(5.64,1) ROUND(5.64,2) ROUND(5.64,-1) ROUND(5.64,-2)
5.6 5.64 10 0
TRUNCATE(52.64,1) TRUNCATE(52.64,2) TRUNCATE(52.64,-1) TRUNCATE(52.64,-2)
52.6 52.64 50 0
ABS(-10) LOG(EXP(10)) EXP(LOG(SQRT(10))*2) POW(10,LOG10(10)) RAND(999999) RAND() POWER(2,4)
10 10.000000 10.000000 10.000000 0.18435012473199 0.76373626176616 16.000000
PI() SIN(PI()/2) COS(PI()/2) TAN(PI()) COT(1) ASIN(1) ACOS(0) ATAN(1)
3.141593 1.000000 0.000000 -0.000000 0.64209262 1.570796 1.570796 0.785398
1 | (1+1) 5 & 3 BIT_COUNT(7)
3 1 3
10 10.0 10. .1e+2 100.0e-1
10 10.0 10 10 10
6e-05 -6e-05 --6e-05 -6e-05+1.000000
6e-05 -6e-05 6e-05 0.99994
0 256 00000000000000065536 2147483647 -2147483648 2147483648 +4294967296
0 256 65536 2147483647 -2147483648 2147483648 4294967296
922337203685477580 92233720368547758000
922337203685477580 92233720368547758080
-922337203685477580 -92233720368547758000
-922337203685477580 -92233720368547758080
9223372036854775807 -009223372036854775808
9223372036854775807 -9223372036854775808
+9999999999999999999 -9999999999999999999
10000000000000000000 -10000000000000000000
DEGREES(PI()) RADIANS(360)
180 6.2831853071796
0=0 1>0 1>=1 1<0 1<=0 1!=0 STRCMP("abc","abcd") STRCMP("b","a") STRCMP("a","a")
1 1 1 0 0 1 -1 1 0
"a"<"b" "a"<="b" "b">="a" "b">"a" "a"="A" "a"<>"b"
1 1 1 1 1 1
"a "="A" "A "="a" "a " <= "A b"
1 1 1
"abc" LIKE "a%" "abc" NOT LIKE "%d%" "a%" LIKE "a\%" "abc%" LIKE "a%\%" "abcd" LIKE "a%b_%d" "a" LIKE "%%a" "abcde" LIKE "a%_e" "abc" LIKE "abc%"
1 1 1 1 1 1 1 1
"a" LIKE "%%b" "a" LIKE "%%ab" "ab" LIKE "a\%" "ab" LIKE "_" "ab" LIKE "ab_" "abc" LIKE "%_d" "abc" LIKE "abc%d"
0 0 0 0 0 0 0
'?' LIKE '|%' '?' LIKE '|%' ESCAPE '|' '%' LIKE '|%' '%' LIKE '|%' ESCAPE '|' '%' LIKE '%'
0 0 0 1 1
'abc' LIKE '%c' 'abcabc' LIKE '%c' "ab" LIKE "" "ab" LIKE "a" "ab" LIKE "ab"
1 1 0 0 1
"Det här är svenska" REGEXP "h[[:alpha:]]+r" "aba" REGEXP "^(a|b)*$"
1 1
"aba" REGEXP CONCAT("^","a")
1
!0 NOT 0=1 !(0=0) 1 AND 1 1 && 0 0 OR 1 1 || NULL 1=1 OR 1=1 AND 1=0
1 1 0 1 0 1 1 1
IF(0,"ERROR","this") IF(1,"is","ERROR") IF(NULL,"ERROR","a") IF(1,2,3)|0 IF(1,2.0,3.0)+0
this is a 2 2.0
a b
1 test
a b
1 test
2 test2
1
1
1
1
1
Table Op Msg_type Msg_text
test.t1 optimize status OK
Table Op Msg_type Msg_text
test.t1 check status OK
test.t2 check error The handler for the table doesn't support check/repair
Table Op Msg_type Msg_text
test.t1 repair status OK
test.t2 repair error The handler for the table doesn't support check/repair
Table Op Msg_type Msg_text
test.t2 check error The handler for the table doesn't support check/repair
test.t1 check status OK
Table Op Msg_type Msg_text
test.t2 check error Table 't2' was not locked with LOCK TABLES
test.t1 check status OK
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment
t1 0 PRIMARY 1 a A 4 NULL NULL
t1 1 b 1 b A 1 NULL NULL
t1 1 b 2 c A 2 NULL NULL
Table Op Msg_type Msg_text
test.t1 check status Table is already up to date
Table Op Msg_type Msg_text
test.t1 check status Table is already up to date
Table Op Msg_type Msg_text
test.t1 check status OK
Table Op Msg_type Msg_text
test.t1 check status OK
Table Op Msg_type Msg_text
test.t1 check status OK
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment
t1 0 PRIMARY 1 a A 5 NULL NULL
t1 1 b 1 b A 1 NULL NULL
t1 1 b 2 c A 2 NULL NULL
Table Op Msg_type Msg_text
test.t1 optimize status OK
Table Op Msg_type Msg_text
test.t1 optimize status Table is already up to date
Table Op Msg_type Msg_text
test.t1 check status OK
Table Op Msg_type Msg_text
test.t1 check status OK
Table Op Msg_type Msg_text
test.t1 check status OK
Table Op Msg_type Msg_text
test.t1 check status OK
Table Op Msg_type Msg_text
test.t1 check status OK
Table Op Msg_type Msg_text
test.t1 check status OK
c d
1
2 a
3 b
a b
4 e
5 f
6 g
a b
4 e
5 f
6 g
a b
4 e
5 f
6 g
c d
1
2 a
3 b
c d e
1 2
2 a 2
3 b 2
CONCAT_WS(pkCrash, strCrash)
1
id val elt(two.val,'one','two')
1 1 one
2 1 one
4 2 two
count(*)
0
count(*)
1
last_insert_id()
3
nr b str nr b str
1 a A 1 a A
2 bbb BBB 1 a A
3 ccc CCC 1 a A
1 a A 2 bbb BBB
2 bbb BBB 2 bbb BBB
3 ccc CCC 2 bbb BBB
1 a A 3 ccc CCC
2 bbb BBB 3 ccc CCC
3 ccc CCC 3 ccc CCC
a
Where
Field Type Null Key Default Extra Privileges
t text YES NULL select,insert,update,references
c varchar(10) YES NULL select,insert,update,references
b blob YES NULL select,insert,update,references
d varchar(10) binary YES NULL select,insert,update,references
Field Type Null Key Default Extra Privileges
t text YES NULL select,insert,update,references
c varchar(10) YES NULL select,insert,update,references
b blob YES NULL select,insert,update,references
d varchar(10) binary YES NULL select,insert,update,references
t
hello
HELLO
c
hello
HELLO
b
hello
d
hello
c
hello
HELLO
d
hello
t
hello
HELLO
HELLO MY
c
hello
HELLO
HELLO MY
b
HELLO
HELLO MY
d
HELLO
HELLO MY
c
hello
HELLO
HELLO MY
d
HELLO
HELLO MY
t
NULL
NULL
1
a
hello
HELLO
HELLO MY
c
NULL
NULL
a
hello
HELLO
HELLO MY
b
NULL
NULL
NULL
HELLO
HELLO MY
a
hello
d
NULL
NULL
1
HELLO
HELLO MY
a
hello
t
NULL
hello
HELLO MY
a
1
b
NULL
hello
HELLO
HELLO MY
a
t
NULL
1
a
hello
HELLO MY
b
NULL
HELLO
HELLO MY
a
hello
t
NULL
1
a
hello
HELLO MY
b
NULL
HELLO
HELLO MY
a
hello
t
NULL
hello
HELLO MY
a
1
b
NULL
hello
HELLO
HELLO MY
a
t
NULL
1
a
hello
HELLO MY
b
NULL
HELLO
HELLO MY
a
hello
c
NULL
hello
HELLO MY
a
d
NULL
hello
HELLO
HELLO MY
a
1
c
NULL
a
hello
HELLO MY
d
NULL
1
HELLO
HELLO MY
a
hello
c
NULL
a
hello
HELLO MY
d
NULL
1
HELLO
HELLO MY
a
hello
t c b d
NULL NULL NULL NULL
hello hello hello hello
HELLO HELLO HELLO HELLO
HELLO MY HELLO MY HELLO MY HELLO MY
a a a a
1 NULL 1
t count(*)
NULL 2
1
1 1
a 1
hello 2
HELLO MY 1
b count(*)
NULL 3
1
HELLO 1
HELLO MY 1
a 1
hello 1
c count(*)
NULL 2
2
a 1
hello 2
HELLO MY 1
d count(*)
NULL 2
1
1 1
HELLO 1
HELLO MY 1
a 1
hello 1
_field_140 min(t3._field_131) min(t3._field_135) min(t3._field_139) min(t3._field_137) min(link_alias_142._field_165) min(link_alias_133._field_72) min(t3._field_145) min(link_alias_148._field_156) min(t3._field_140) t3_id
test
job
1 test job 1 0000-00-00 00:00:00 1999-02-25 22:43:32 0 High admin 0 tomato test
job
1 1
stamp
19990402000000
stamp
19990402000000
date_format(a,"%Y %y") year(a) year(now())
2000 00 2000 2000
ix
19991101000000
19990102030405
19990630232922
19990601000000
19990930232922
19990531232922
19990501000000
19991101000000
19990501000000
date date_time time_stamp
1998-12-31 1998-12-31 23:59:59 19981231235959
1999-01-01 1999-01-01 00:00:00 19990101000000
1999-09-09 1999-09-09 23:59:59 19990909235959
2000-01-01 2000-01-01 00:00:00 20000101000000
2000-02-28 2000-02-28 00:00:00 20000228000000
2000-02-29 2000-02-29 00:00:00 20000229000000
2000-03-01 2000-03-01 00:00:00 20000301000000
2000-12-31 2000-12-31 23:59:59 20001231235959
2001-01-01 2001-01-01 00:00:00 20010101000000
2004-12-31 2004-12-31 23:59:59 20041231235959
2005-01-01 2005-01-01 00:00:00 20050101000000
2030-01-01 2030-01-01 00:00:00 20300101000000
2050-01-01 2050-01-01 00:00:00 20131126000036
a reverse(a)
empty ytpme
a
hello
hello
hello word
count(*)
2
a b c
test 2000-01-01 2000-01-01 2000-01-01 00:00:00
a b c
test 2000-01-01 2000-01-01 2000-01-01 00:00:00
name cdate note
name1 1998-01-01 note01
name2 1998-01-01 note01
datum
2000-01-02
2000-01-03
2000-01-04
s
1998-01-02
s
1998-01-04
s
19980104
date_add(date,INTERVAL 1 DAY) date_add(date,INTERVAL 1 SECOND)
2000-08-11 2000-08-10 00:00:01
2000-08-12 2000-08-11 00:00:01
t
2000-01-01 00:00:00
2069-12-31 00:00:00
1970-01-01 00:00:00
1999-12-31 00:00:00
1000-01-01 00:00:00
9999-12-31 00:00:00
2000-01-01 00:00:00
2069-12-31 00:00:00
1970-01-01 00:00:00
1999-12-31 23:59:59
1000-01-01 00:00:00
9999-12-31 23:59:59
Table Op Msg_type Msg_text
test.t1 optimize status OK
t
2000-01-01 00:00:00
2069-12-31 00:00:00
1970-01-01 00:00:00
1999-12-31 00:00:00
0000-01-01 00:00:00
0001-01-01 00:00:00
9999-12-31 00:00:00
2000-10-10 00:00:00
2069-12-31 00:00:00
1970-01-01 00:00:00
1999-12-31 23:59:59
1000-01-01 00:00:00
9999-12-31 23:59:59
date_format(a,"%Y-%m-%d")=b right(a,6)=c+0 a=d+0
1 1 1
a
0000-00-00 00:00:00
This diff is collapsed.
10 10.0 10. .1e+2 100.0e-1
10 10.0 10 10 10
6e-05 -6e-05 --6e-05 -6e-05+1.000000
6e-05 -6e-05 6e-05 0.99994
Field Type Null Key Default Extra Privileges
f1 float YES NULL select,insert,update,references
f2 double YES NULL select,insert,update,references
f1 f2
10 10
100000 100000
1.23457e+09 1234567890
1e+10 10000000000
1e+15 1e+15
1e+20 1e+20
3.40282e+38 1e+50
3.40282e+38 1e+150
-10 -10
1e-05 1e-05
1e-10 1e-10
1e-15 1e-15
1e-20 1e-20
0 1e-50
0 1e-150
datum
0.5
1
1.5
2
2.5
datum
0.5
1
datum
2
2.5
datum
1.5
a
-0.010
-0.002
-0.000
0.000
1.000
min(a)
-0.010
Field Type Null Key Default Extra Privileges
f float YES NULL select,insert,update,references
f2 float YES NULL select,insert,update,references
f3 float(6,2) YES NULL select,insert,update,references
d double YES NULL select,insert,update,references
d2 double YES NULL select,insert,update,references
d3 double(10,3) YES NULL select,insert,update,references
de decimal(10,0) YES NULL select,insert,update,references
de2 decimal(6,0) YES NULL select,insert,update,references
de3 decimal(5,2) YES NULL select,insert,update,references
n decimal(10,0) YES NULL select,insert,update,references
n2 decimal(8,0) YES NULL select,insert,update,references
n3 decimal(8,6) YES NULL select,insert,update,references
a
-0.010
-0.002
-0.000
0.000
1.000
min(a)
-0.010
This diff is collapsed.
t
10:22:33
12:34:56
00:00:10
00:12:34
12:34:56
123:45:59
00:00:01
01:23:00
01:23:45
00:00:10
-241:22:33
490:22:33
20:33:34
00:00:30
00:12:30
00:12:30
12:30:00
12:30:35
36:30:31
t
10:22:33
12:34:56
00:00:10
00:12:34
12:34:56
123:45:59
00:00:01
01:23:00
01:23:45
00:00:10
-241:22:33
490:22:33
20:33:34
00:00:30
00:12:30
00:12:30
12:30:00
12:30:35
36:30:31
00:00:10
00:00:00
838:59:59
838:59:59
262:22:00
00:00:12
t time_to_sec(t) sec_to_time(time_to_sec(t))
09:00:00 32400 09:00:00
13:00:00 46800 13:00:00
19:38:34 70714 19:38:34
13:00:00 46800 13:00:00
09:00:00 32400 09:00:00
09:00:00 32400 09:00:00
13:00:00 46800 13:00:00
13:00:00 46800 13:00:00
13:00:00 46800 13:00:00
09:00:00 32400 09:00:00
sec_to_time(time_to_sec(t))
09:00:00
13:00:00
19:38:34
13:00:00
09:00:00
09:00:00
13:00:00
13:00:00
13:00:00
09:00:00
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment