mirror of
https://github.com/MariaDB/server.git
synced 2025-09-02 09:41:40 +03:00
Automerge
This commit is contained in:
@@ -13,7 +13,7 @@
|
|||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.7 FATAL_ERROR)
|
CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)
|
||||||
|
|
||||||
PROJECT(MySql)
|
PROJECT(MySql)
|
||||||
|
|
||||||
|
@@ -2302,8 +2302,10 @@ extern "C" char **new_mysql_completion (const char *text, int start, int end);
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(USE_NEW_READLINE_INTERFACE)
|
#if defined(USE_NEW_READLINE_INTERFACE)
|
||||||
|
static int fake_magic_space(int, int);
|
||||||
extern "C" char *no_completion(const char*,int)
|
extern "C" char *no_completion(const char*,int)
|
||||||
#elif defined(USE_LIBEDIT_INTERFACE)
|
#elif defined(USE_LIBEDIT_INTERFACE)
|
||||||
|
static int fake_magic_space(const char *, int);
|
||||||
extern "C" int no_completion(const char*,int)
|
extern "C" int no_completion(const char*,int)
|
||||||
#else
|
#else
|
||||||
extern "C" char *no_completion()
|
extern "C" char *no_completion()
|
||||||
@@ -2380,6 +2382,18 @@ static int not_in_history(const char *line)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(USE_NEW_READLINE_INTERFACE)
|
||||||
|
static int fake_magic_space(int, int)
|
||||||
|
#else
|
||||||
|
static int fake_magic_space(const char *, int)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
rl_insert(1, ' ');
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void initialize_readline (char *name)
|
static void initialize_readline (char *name)
|
||||||
{
|
{
|
||||||
/* Allow conditional parsing of the ~/.inputrc file. */
|
/* Allow conditional parsing of the ~/.inputrc file. */
|
||||||
@@ -2389,12 +2403,15 @@ static void initialize_readline (char *name)
|
|||||||
#if defined(USE_NEW_READLINE_INTERFACE)
|
#if defined(USE_NEW_READLINE_INTERFACE)
|
||||||
rl_attempted_completion_function= (rl_completion_func_t*)&new_mysql_completion;
|
rl_attempted_completion_function= (rl_completion_func_t*)&new_mysql_completion;
|
||||||
rl_completion_entry_function= (rl_compentry_func_t*)&no_completion;
|
rl_completion_entry_function= (rl_compentry_func_t*)&no_completion;
|
||||||
|
|
||||||
|
rl_add_defun("magic-space", (rl_command_func_t *)&fake_magic_space, -1);
|
||||||
#elif defined(USE_LIBEDIT_INTERFACE)
|
#elif defined(USE_LIBEDIT_INTERFACE)
|
||||||
#ifdef HAVE_LOCALE_H
|
#ifdef HAVE_LOCALE_H
|
||||||
setlocale(LC_ALL,""); /* so as libedit use isprint */
|
setlocale(LC_ALL,""); /* so as libedit use isprint */
|
||||||
#endif
|
#endif
|
||||||
rl_attempted_completion_function= (CPPFunction*)&new_mysql_completion;
|
rl_attempted_completion_function= (CPPFunction*)&new_mysql_completion;
|
||||||
rl_completion_entry_function= &no_completion;
|
rl_completion_entry_function= &no_completion;
|
||||||
|
rl_add_defun("magic-space", (Function*)&fake_magic_space, -1);
|
||||||
#else
|
#else
|
||||||
rl_attempted_completion_function= (CPPFunction*)&new_mysql_completion;
|
rl_attempted_completion_function= (CPPFunction*)&new_mysql_completion;
|
||||||
rl_completion_entry_function= &no_completion;
|
rl_completion_entry_function= &no_completion;
|
||||||
@@ -3308,6 +3325,9 @@ print_table_data(MYSQL_RES *result)
|
|||||||
uint visible_length;
|
uint visible_length;
|
||||||
uint extra_padding;
|
uint extra_padding;
|
||||||
|
|
||||||
|
if (off)
|
||||||
|
(void) tee_fputs(" ", PAGER);
|
||||||
|
|
||||||
if (cur[off] == NULL)
|
if (cur[off] == NULL)
|
||||||
{
|
{
|
||||||
buffer= "NULL";
|
buffer= "NULL";
|
||||||
@@ -3342,7 +3362,7 @@ print_table_data(MYSQL_RES *result)
|
|||||||
else
|
else
|
||||||
tee_print_sized_data(buffer, data_length, field_max_length+extra_padding, FALSE);
|
tee_print_sized_data(buffer, data_length, field_max_length+extra_padding, FALSE);
|
||||||
}
|
}
|
||||||
tee_fputs(" | ", PAGER);
|
tee_fputs(" |", PAGER);
|
||||||
}
|
}
|
||||||
(void) tee_fputs("\n", PAGER);
|
(void) tee_fputs("\n", PAGER);
|
||||||
}
|
}
|
||||||
|
@@ -253,8 +253,12 @@ get_one_option(int optid, const struct my_option *opt,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'b': /* --basedir */
|
case 'b': /* --basedir */
|
||||||
case 'v': /* --verbose */
|
|
||||||
case 'd': /* --datadir */
|
case 'd': /* --datadir */
|
||||||
|
fprintf(stderr, "%s: the '--%s' option is always ignored\n",
|
||||||
|
my_progname, optid == 'b' ? "basedir" : "datadir");
|
||||||
|
/* FALLTHROUGH */
|
||||||
|
|
||||||
|
case 'v': /* --verbose */
|
||||||
case 'f': /* --force */
|
case 'f': /* --force */
|
||||||
add_option= FALSE;
|
add_option= FALSE;
|
||||||
break;
|
break;
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
#include <mysql.h>
|
#include <mysql.h>
|
||||||
|
|
||||||
#define ADMIN_VERSION "8.42"
|
#define ADMIN_VERSION "8.42"
|
||||||
#define MAX_MYSQL_VAR 256
|
#define MAX_MYSQL_VAR 512
|
||||||
#define SHUTDOWN_DEF_TIMEOUT 3600 /* Wait for shutdown */
|
#define SHUTDOWN_DEF_TIMEOUT 3600 /* Wait for shutdown */
|
||||||
#define MAX_TRUNC_LENGTH 3
|
#define MAX_TRUNC_LENGTH 3
|
||||||
|
|
||||||
@@ -371,7 +371,7 @@ int main(int argc,char *argv[])
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while (!interrupted && (!opt_count_iterations || nr_iterations))
|
while (!interrupted)
|
||||||
{
|
{
|
||||||
new_line = 0;
|
new_line = 0;
|
||||||
if ((error=execute_commands(&mysql,argc,commands)))
|
if ((error=execute_commands(&mysql,argc,commands)))
|
||||||
@@ -395,11 +395,11 @@ int main(int argc,char *argv[])
|
|||||||
}
|
}
|
||||||
if (interval)
|
if (interval)
|
||||||
{
|
{
|
||||||
|
if (opt_count_iterations && --nr_iterations == 0)
|
||||||
|
break;
|
||||||
sleep(interval);
|
sleep(interval);
|
||||||
if (new_line)
|
if (new_line)
|
||||||
puts("");
|
puts("");
|
||||||
if (opt_count_iterations)
|
|
||||||
nr_iterations--;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
@@ -743,6 +743,9 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
|
|||||||
mysql_error(mysql));
|
mysql_error(mysql));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DBUG_ASSERT(mysql_num_rows(res) < MAX_MYSQL_VAR);
|
||||||
|
|
||||||
if (!opt_vertical)
|
if (!opt_vertical)
|
||||||
print_header(res);
|
print_header(res);
|
||||||
else
|
else
|
||||||
|
@@ -442,7 +442,7 @@ static int process_selected_tables(char *db, char **table_names, int tables)
|
|||||||
{
|
{
|
||||||
if (use_db(db))
|
if (use_db(db))
|
||||||
return 1;
|
return 1;
|
||||||
if (opt_all_in_1)
|
if (opt_all_in_1 && what_to_do != DO_UPGRADE)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
We need table list in form `a`, `b`, `c`
|
We need table list in form `a`, `b`, `c`
|
||||||
@@ -536,7 +536,7 @@ static int process_all_tables_in_db(char *database)
|
|||||||
|
|
||||||
num_columns= mysql_num_fields(res);
|
num_columns= mysql_num_fields(res);
|
||||||
|
|
||||||
if (opt_all_in_1)
|
if (opt_all_in_1 && what_to_do != DO_UPGRADE)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
We need table list in form `a`, `b`, `c`
|
We need table list in form `a`, `b`, `c`
|
||||||
|
@@ -4810,7 +4810,8 @@ static my_bool get_view_structure(char *table, char* db)
|
|||||||
result_table);
|
result_table);
|
||||||
check_io(sql_file);
|
check_io(sql_file);
|
||||||
}
|
}
|
||||||
fprintf(sql_file, "/*!50001 DROP TABLE %s*/;\n", opt_quoted_table);
|
/* Table might not exist if this view was dumped with --tab. */
|
||||||
|
fprintf(sql_file, "/*!50001 DROP TABLE IF EXISTS %s*/;\n", opt_quoted_table);
|
||||||
if (opt_drop)
|
if (opt_drop)
|
||||||
{
|
{
|
||||||
fprintf(sql_file, "/*!50001 DROP VIEW IF EXISTS %s*/;\n",
|
fprintf(sql_file, "/*!50001 DROP VIEW IF EXISTS %s*/;\n",
|
||||||
|
@@ -303,7 +303,8 @@ static int get_options(int *argc, char ***argv)
|
|||||||
static int write_to_table(char *filename, MYSQL *mysql)
|
static int write_to_table(char *filename, MYSQL *mysql)
|
||||||
{
|
{
|
||||||
char tablename[FN_REFLEN], hard_path[FN_REFLEN],
|
char tablename[FN_REFLEN], hard_path[FN_REFLEN],
|
||||||
sql_statement[FN_REFLEN*16+256], *end;
|
escaped_name[FN_REFLEN * 2 + 1],
|
||||||
|
sql_statement[FN_REFLEN*16+256], *end, *pos;
|
||||||
DBUG_ENTER("write_to_table");
|
DBUG_ENTER("write_to_table");
|
||||||
DBUG_PRINT("enter",("filename: %s",filename));
|
DBUG_PRINT("enter",("filename: %s",filename));
|
||||||
|
|
||||||
@@ -338,15 +339,25 @@ static int write_to_table(char *filename, MYSQL *mysql)
|
|||||||
fprintf(stdout, "Loading data from SERVER file: %s into %s\n",
|
fprintf(stdout, "Loading data from SERVER file: %s into %s\n",
|
||||||
hard_path, tablename);
|
hard_path, tablename);
|
||||||
}
|
}
|
||||||
|
mysql_real_escape_string(mysql, escaped_name, hard_path,
|
||||||
|
(unsigned long) strlen(hard_path));
|
||||||
sprintf(sql_statement, "LOAD DATA %s %s INFILE '%s'",
|
sprintf(sql_statement, "LOAD DATA %s %s INFILE '%s'",
|
||||||
opt_low_priority ? "LOW_PRIORITY" : "",
|
opt_low_priority ? "LOW_PRIORITY" : "",
|
||||||
opt_local_file ? "LOCAL" : "", hard_path);
|
opt_local_file ? "LOCAL" : "", escaped_name);
|
||||||
end= strend(sql_statement);
|
end= strend(sql_statement);
|
||||||
if (replace)
|
if (replace)
|
||||||
end= strmov(end, " REPLACE");
|
end= strmov(end, " REPLACE");
|
||||||
if (ignore)
|
if (ignore)
|
||||||
end= strmov(end, " IGNORE");
|
end= strmov(end, " IGNORE");
|
||||||
end= strmov(strmov(end, " INTO TABLE "), tablename);
|
end= strmov(end, " INTO TABLE `");
|
||||||
|
/* Turn any ` into `` in table name. */
|
||||||
|
for (pos= tablename; *pos; pos++)
|
||||||
|
{
|
||||||
|
if (*pos == '`')
|
||||||
|
*end++= '`';
|
||||||
|
*end++= *pos;
|
||||||
|
}
|
||||||
|
end= strmov(end, "`");
|
||||||
|
|
||||||
if (fields_terminated || enclosed || opt_enclosed || escaped)
|
if (fields_terminated || enclosed || opt_enclosed || escaped)
|
||||||
end= strmov(end, " FIELDS");
|
end= strmov(end, " FIELDS");
|
||||||
|
@@ -565,8 +565,7 @@ static struct my_option my_long_options[] =
|
|||||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"csv", OPT_SLAP_CSV,
|
{"csv", OPT_SLAP_CSV,
|
||||||
"Generate CSV output to named file or to stdout if no file is named.",
|
"Generate CSV output to named file or to stdout if no file is named.",
|
||||||
(uchar**) &opt_csv_str, (uchar**) &opt_csv_str, 0, GET_STR,
|
NULL, NULL, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
OPT_ARG, 0, 0, 0, 0, 0, 0},
|
|
||||||
#ifdef DBUG_OFF
|
#ifdef DBUG_OFF
|
||||||
{"debug", '#', "This is a non-debug version. Catch this and exit.",
|
{"debug", '#', "This is a non-debug version. Catch this and exit.",
|
||||||
0, 0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
@@ -740,6 +739,11 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||||
debug_check_flag= 1;
|
debug_check_flag= 1;
|
||||||
break;
|
break;
|
||||||
|
case OPT_SLAP_CSV:
|
||||||
|
if (!argument)
|
||||||
|
argument= (char *)"-"; /* use stdout */
|
||||||
|
opt_csv_str= argument;
|
||||||
|
break;
|
||||||
#include <sslopt-case.h>
|
#include <sslopt-case.h>
|
||||||
case 'V':
|
case 'V':
|
||||||
print_version();
|
print_version();
|
||||||
|
@@ -17,15 +17,6 @@
|
|||||||
|
|
||||||
#define BIG_TABLES
|
#define BIG_TABLES
|
||||||
|
|
||||||
#ifdef __WIN2000__
|
|
||||||
/* We have to do this define before including windows.h to get the AWE API
|
|
||||||
functions */
|
|
||||||
#define _WIN32_WINNT 0x0500
|
|
||||||
#else
|
|
||||||
/* Get NT 4.0 functions */
|
|
||||||
#define _WIN32_WINNT 0x0400
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_MSC_VER) && _MSC_VER >= 1400
|
#if defined(_MSC_VER) && _MSC_VER >= 1400
|
||||||
/* Avoid endless warnings about sprintf() etc. being unsafe. */
|
/* Avoid endless warnings about sprintf() etc. being unsafe. */
|
||||||
#define _CRT_SECURE_NO_DEPRECATE 1
|
#define _CRT_SECURE_NO_DEPRECATE 1
|
||||||
|
@@ -258,3 +258,15 @@ dec $it;
|
|||||||
}
|
}
|
||||||
show master status /* must show new binlog index after rotating */;
|
show master status /* must show new binlog index after rotating */;
|
||||||
drop table t3;
|
drop table t3;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #45998: database crashes when running "create as select"
|
||||||
|
--echo #
|
||||||
|
CREATE DATABASE test1;
|
||||||
|
USE test1;
|
||||||
|
DROP DATABASE test1;
|
||||||
|
CREATE TABLE test.t1(a int);
|
||||||
|
INSERT INTO test.t1 VALUES (1), (2);
|
||||||
|
CREATE TABLE test.t2 SELECT * FROM test.t1;
|
||||||
|
USE test;
|
||||||
|
DROP TABLES t1, t2;
|
||||||
|
@@ -543,3 +543,11 @@ awrd bwrd cwrd
|
|||||||
awrd bwrd cwrd
|
awrd bwrd cwrd
|
||||||
awrd bwrd cwrd
|
awrd bwrd cwrd
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (col text, FULLTEXT KEY full_text (col));
|
||||||
|
PREPARE s FROM
|
||||||
|
"SELECT MATCH (col) AGAINST('findme') FROM t1 ORDER BY MATCH (col) AGAINST('findme')"
|
||||||
|
;
|
||||||
|
EXECUTE s;
|
||||||
|
MATCH (col) AGAINST('findme')
|
||||||
|
DEALLOCATE PREPARE s;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -64,28 +64,28 @@ drop table t1;
|
|||||||
+----------------------+------------+--------+
|
+----------------------+------------+--------+
|
||||||
| concat('>',col1,'<') | col2 | col3 |
|
| concat('>',col1,'<') | col2 | col3 |
|
||||||
+----------------------+------------+--------+
|
+----------------------+------------+--------+
|
||||||
| >a < | b | 123421 |
|
| >a < | b | 123421 |
|
||||||
| >a < | 0123456789 | 4 |
|
| >a < | 0123456789 | 4 |
|
||||||
| >abcd< | | 4 |
|
| >abcd< | | 4 |
|
||||||
+----------------------+------------+--------+
|
+----------------------+------------+--------+
|
||||||
+-------------------+
|
+-------------------+
|
||||||
| __tañgè Ñãmé |
|
| __tañgè Ñãmé |
|
||||||
+-------------------+
|
+-------------------+
|
||||||
| John Doe |
|
| John Doe |
|
||||||
+-------------------+
|
+-------------------+
|
||||||
+-------------------+
|
+-------------------+
|
||||||
| John Doe |
|
| John Doe |
|
||||||
+-------------------+
|
+-------------------+
|
||||||
| __tañgè Ñãmé |
|
| __tañgè Ñãmé |
|
||||||
+-------------------+
|
+-------------------+
|
||||||
+------+------+---------------------------+
|
+------+------+---------------------------+
|
||||||
| i | j | k |
|
| i | j | k |
|
||||||
+------+------+---------------------------+
|
+------+------+---------------------------+
|
||||||
| 1 | NULL | NULL |
|
| 1 | NULL | NULL |
|
||||||
| NULL | NULL | <-----------------------> |
|
| NULL | NULL | <-----------------------> |
|
||||||
| NULL | NULL | <----- |
|
| NULL | NULL | <----- |
|
||||||
| NULL | NULL | Τη γλώσσα |
|
| NULL | NULL | Τη γλώσσα |
|
||||||
| NULL | NULL | ᛖᚴ ᚷᛖᛏ |
|
| NULL | NULL | ᛖᚴ ᚷᛖᛏ |
|
||||||
+------+------+---------------------------+
|
+------+------+---------------------------+
|
||||||
i j k
|
i j k
|
||||||
NULL 1 NULL
|
NULL 1 NULL
|
||||||
@@ -96,14 +96,14 @@ k int(11) YES NULL
|
|||||||
+------+---+------+
|
+------+---+------+
|
||||||
| i | j | k |
|
| i | j | k |
|
||||||
+------+---+------+
|
+------+---+------+
|
||||||
| NULL | 1 | NULL |
|
| NULL | 1 | NULL |
|
||||||
+------+---+------+
|
+------+---+------+
|
||||||
+-------+---------+------+-----+---------+-------+
|
+-------+---------+------+-----+---------+-------+
|
||||||
| Field | Type | Null | Key | Default | Extra |
|
| Field | Type | Null | Key | Default | Extra |
|
||||||
+-------+---------+------+-----+---------+-------+
|
+-------+---------+------+-----+---------+-------+
|
||||||
| i | int(11) | YES | | NULL | |
|
| i | int(11) | YES | | NULL | |
|
||||||
| j | int(11) | NO | | NULL | |
|
| j | int(11) | NO | | NULL | |
|
||||||
| k | int(11) | YES | | NULL | |
|
| k | int(11) | YES | | NULL | |
|
||||||
+-------+---------+------+-----+---------+-------+
|
+-------+---------+------+-----+---------+-------+
|
||||||
i s1
|
i s1
|
||||||
1 x
|
1 x
|
||||||
@@ -112,16 +112,16 @@ i s1
|
|||||||
+------+------+
|
+------+------+
|
||||||
| i | s1 |
|
| i | s1 |
|
||||||
+------+------+
|
+------+------+
|
||||||
| 1 | x |
|
| 1 | x |
|
||||||
| 2 | NULL |
|
| 2 | NULL |
|
||||||
| 3 | |
|
| 3 | |
|
||||||
+------+------+
|
+------+------+
|
||||||
unhex('zz')
|
unhex('zz')
|
||||||
NULL
|
NULL
|
||||||
+-------------+
|
+-------------+
|
||||||
| unhex('zz') |
|
| unhex('zz') |
|
||||||
+-------------+
|
+-------------+
|
||||||
| NULL |
|
| NULL |
|
||||||
+-------------+
|
+-------------+
|
||||||
create table t1(a int, b varchar(255), c int);
|
create table t1(a int, b varchar(255), c int);
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
|
@@ -186,4 +186,18 @@ a
|
|||||||
500
|
500
|
||||||
DROP DATABASE `a@b`;
|
DROP DATABASE `a@b`;
|
||||||
USE test;
|
USE test;
|
||||||
|
#
|
||||||
|
# Bug #31821: --all-in-1 and --fix-table-names don't work together
|
||||||
|
#
|
||||||
|
drop table if exists `#mysql50#t1-1`;
|
||||||
|
create table `#mysql50#t1-1` (a int);
|
||||||
|
show tables like 't1-1';
|
||||||
|
Tables_in_test (t1-1)
|
||||||
|
t1-1
|
||||||
|
drop table `t1-1`;
|
||||||
|
create table `#mysql50#t1-1` (a int);
|
||||||
|
show tables like 't1-1';
|
||||||
|
Tables_in_test (t1-1)
|
||||||
|
t1-1
|
||||||
|
drop table `t1-1`;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@@ -1991,7 +1991,7 @@ SET character_set_client = utf8;
|
|||||||
`a` varchar(30)
|
`a` varchar(30)
|
||||||
) ENGINE=MyISAM */;
|
) ENGINE=MyISAM */;
|
||||||
SET character_set_client = @saved_cs_client;
|
SET character_set_client = @saved_cs_client;
|
||||||
/*!50001 DROP TABLE `v2`*/;
|
/*!50001 DROP TABLE IF EXISTS `v2`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@@ -2085,7 +2085,7 @@ SET character_set_client = utf8;
|
|||||||
`a` int(11)
|
`a` int(11)
|
||||||
) ENGINE=MyISAM */;
|
) ENGINE=MyISAM */;
|
||||||
SET character_set_client = @saved_cs_client;
|
SET character_set_client = @saved_cs_client;
|
||||||
/*!50001 DROP TABLE `v1`*/;
|
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@@ -2159,7 +2159,7 @@ SET character_set_client = utf8;
|
|||||||
`a` varchar(30)
|
`a` varchar(30)
|
||||||
) ENGINE=MyISAM */;
|
) ENGINE=MyISAM */;
|
||||||
SET character_set_client = @saved_cs_client;
|
SET character_set_client = @saved_cs_client;
|
||||||
/*!50001 DROP TABLE `v2`*/;
|
/*!50001 DROP TABLE IF EXISTS `v2`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@@ -2293,7 +2293,7 @@ SET character_set_client = utf8;
|
|||||||
`c` varchar(30)
|
`c` varchar(30)
|
||||||
) ENGINE=MyISAM */;
|
) ENGINE=MyISAM */;
|
||||||
SET character_set_client = @saved_cs_client;
|
SET character_set_client = @saved_cs_client;
|
||||||
/*!50001 DROP TABLE `v1`*/;
|
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@@ -2307,7 +2307,7 @@ SET character_set_client = @saved_cs_client;
|
|||||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
/*!50001 DROP TABLE `v2`*/;
|
/*!50001 DROP TABLE IF EXISTS `v2`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@@ -2321,7 +2321,7 @@ SET character_set_client = @saved_cs_client;
|
|||||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
/*!50001 DROP TABLE `v3`*/;
|
/*!50001 DROP TABLE IF EXISTS `v3`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v3`*/;
|
/*!50001 DROP VIEW IF EXISTS `v3`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@@ -3054,7 +3054,7 @@ SET character_set_client = utf8;
|
|||||||
SET character_set_client = @saved_cs_client;
|
SET character_set_client = @saved_cs_client;
|
||||||
|
|
||||||
USE `test`;
|
USE `test`;
|
||||||
/*!50001 DROP TABLE `v0`*/;
|
/*!50001 DROP TABLE IF EXISTS `v0`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v0`*/;
|
/*!50001 DROP VIEW IF EXISTS `v0`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@@ -3068,7 +3068,7 @@ USE `test`;
|
|||||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
/*!50001 DROP TABLE `v1`*/;
|
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@@ -3082,7 +3082,7 @@ USE `test`;
|
|||||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
/*!50001 DROP TABLE `v2`*/;
|
/*!50001 DROP TABLE IF EXISTS `v2`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@@ -3320,7 +3320,7 @@ insert into t values(5, 51);
|
|||||||
create view v1 as select qty, price, qty*price as value from t;
|
create view v1 as select qty, price, qty*price as value from t;
|
||||||
create view v2 as select qty from v1;
|
create view v2 as select qty from v1;
|
||||||
mysqldump {
|
mysqldump {
|
||||||
/*!50001 DROP TABLE `v1`*/;
|
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||||
@@ -3335,7 +3335,7 @@ mysqldump {
|
|||||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
|
|
||||||
} mysqldump {
|
} mysqldump {
|
||||||
/*!50001 DROP TABLE `v2`*/;
|
/*!50001 DROP TABLE IF EXISTS `v2`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||||
@@ -3434,7 +3434,7 @@ SET character_set_client = utf8;
|
|||||||
SET character_set_client = @saved_cs_client;
|
SET character_set_client = @saved_cs_client;
|
||||||
|
|
||||||
USE `mysqldump_test_db`;
|
USE `mysqldump_test_db`;
|
||||||
/*!50001 DROP TABLE `v1`*/;
|
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@@ -3496,7 +3496,7 @@ SET character_set_client = @saved_cs_client;
|
|||||||
USE `mysqldump_tables`;
|
USE `mysqldump_tables`;
|
||||||
|
|
||||||
USE `mysqldump_views`;
|
USE `mysqldump_views`;
|
||||||
/*!50001 DROP TABLE `nasishnasifu`*/;
|
/*!50001 DROP TABLE IF EXISTS `nasishnasifu`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||||
@@ -3885,7 +3885,7 @@ SET character_set_client = utf8;
|
|||||||
`c` int(11)
|
`c` int(11)
|
||||||
) ENGINE=MyISAM */;
|
) ENGINE=MyISAM */;
|
||||||
SET character_set_client = @saved_cs_client;
|
SET character_set_client = @saved_cs_client;
|
||||||
/*!50001 DROP TABLE `v2`*/;
|
/*!50001 DROP TABLE IF EXISTS `v2`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@@ -4304,7 +4304,7 @@ SET character_set_client = utf8;
|
|||||||
SET character_set_client = @saved_cs_client;
|
SET character_set_client = @saved_cs_client;
|
||||||
|
|
||||||
USE `mysqldump_test_db`;
|
USE `mysqldump_test_db`;
|
||||||
/*!50001 DROP TABLE `v1`*/;
|
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@@ -4430,6 +4430,25 @@ DROP DATABASE mysqldump_test_db;
|
|||||||
|
|
||||||
# -- End of test case for Bug#32538.
|
# -- End of test case for Bug#32538.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#37377 Incorrect DROP TABLE statement in dump of a VIEW using --tab
|
||||||
|
#
|
||||||
|
create table t1 (a int);
|
||||||
|
create view v1 as select a from t1;
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Bug#28071 mysqlimport does not quote or escape table name
|
||||||
|
#
|
||||||
|
drop table if exists `load`;
|
||||||
|
create table `load` (a varchar(255));
|
||||||
|
test.load: Records: 70 Deleted: 0 Skipped: 0 Warnings: 0
|
||||||
|
select count(*) from `load`;
|
||||||
|
count(*)
|
||||||
|
70
|
||||||
|
drop table `load`;
|
||||||
SET @@GLOBAL.CONCURRENT_INSERT = @OLD_CONCURRENT_INSERT;
|
SET @@GLOBAL.CONCURRENT_INSERT = @OLD_CONCURRENT_INSERT;
|
||||||
|
|
||||||
Bug #34861 - mysqldump with --tab gives weird output for triggers.
|
Bug #34861 - mysqldump with --tab gives weird output for triggers.
|
||||||
|
@@ -5,45 +5,45 @@
|
|||||||
+----------+--------+
|
+----------+--------+
|
||||||
| expected | result |
|
| expected | result |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| 2 | 2 |
|
| 2 | 2 |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| expected | result |
|
| expected | result |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| 1 | 1 |
|
| 1 | 1 |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| expected | result |
|
| expected | result |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| 3 | 3 |
|
| 3 | 3 |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| expected | result |
|
| expected | result |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| 2 | 2 |
|
| 2 | 2 |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| expected | result |
|
| expected | result |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| 7 | 7 |
|
| 7 | 7 |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| expected | result |
|
| expected | result |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| 8 | 8 |
|
| 8 | 8 |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| expected | result |
|
| expected | result |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| 7 | 7 |
|
| 7 | 7 |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| expected | result |
|
| expected | result |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| 4 | 4 |
|
| 4 | 4 |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| expected | result |
|
| expected | result |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
| 4 | 4 |
|
| 4 | 4 |
|
||||||
+----------+--------+
|
+----------+--------+
|
||||||
|
@@ -1298,3 +1298,14 @@ show master status /* must show new binlog index after rotating */;
|
|||||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||||
master-bin.000002 106
|
master-bin.000002 106
|
||||||
drop table t3;
|
drop table t3;
|
||||||
|
#
|
||||||
|
# Bug #45998: database crashes when running "create as select"
|
||||||
|
#
|
||||||
|
CREATE DATABASE test1;
|
||||||
|
USE test1;
|
||||||
|
DROP DATABASE test1;
|
||||||
|
CREATE TABLE test.t1(a int);
|
||||||
|
INSERT INTO test.t1 VALUES (1), (2);
|
||||||
|
CREATE TABLE test.t2 SELECT * FROM test.t1;
|
||||||
|
USE test;
|
||||||
|
DROP TABLES t1, t2;
|
||||||
|
@@ -773,3 +773,14 @@ show master status /* must show new binlog index after rotating */;
|
|||||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||||
master-bin.000002 106
|
master-bin.000002 106
|
||||||
drop table t3;
|
drop table t3;
|
||||||
|
#
|
||||||
|
# Bug #45998: database crashes when running "create as select"
|
||||||
|
#
|
||||||
|
CREATE DATABASE test1;
|
||||||
|
USE test1;
|
||||||
|
DROP DATABASE test1;
|
||||||
|
CREATE TABLE test.t1(a int);
|
||||||
|
INSERT INTO test.t1 VALUES (1), (2);
|
||||||
|
CREATE TABLE test.t2 SELECT * FROM test.t1;
|
||||||
|
USE test;
|
||||||
|
DROP TABLES t1, t2;
|
||||||
|
@@ -471,3 +471,16 @@ CREATE TABLE t1(a VARCHAR(64), FULLTEXT(a));
|
|||||||
INSERT INTO t1 VALUES('awrd bwrd cwrd'),('awrd bwrd cwrd'),('awrd bwrd cwrd');
|
INSERT INTO t1 VALUES('awrd bwrd cwrd'),('awrd bwrd cwrd'),('awrd bwrd cwrd');
|
||||||
SELECT * FROM t1 WHERE MATCH(a) AGAINST('+awrd bwrd* +cwrd*' IN BOOLEAN MODE);
|
SELECT * FROM t1 WHERE MATCH(a) AGAINST('+awrd bwrd* +cwrd*' IN BOOLEAN MODE);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#37740 Server crashes on execute statement with full text search and match against
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (col text, FULLTEXT KEY full_text (col));
|
||||||
|
|
||||||
|
PREPARE s FROM
|
||||||
|
"SELECT MATCH (col) AGAINST('findme') FROM t1 ORDER BY MATCH (col) AGAINST('findme')"
|
||||||
|
;
|
||||||
|
|
||||||
|
EXECUTE s;
|
||||||
|
DEALLOCATE PREPARE s;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -193,5 +193,22 @@ DROP DATABASE `a@b`;
|
|||||||
|
|
||||||
USE test;
|
USE test;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #31821: --all-in-1 and --fix-table-names don't work together
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists `#mysql50#t1-1`;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
create table `#mysql50#t1-1` (a int);
|
||||||
|
--exec $MYSQL_CHECK --all-in-1 --fix-table-names --databases test
|
||||||
|
show tables like 't1-1';
|
||||||
|
drop table `t1-1`;
|
||||||
|
|
||||||
|
create table `#mysql50#t1-1` (a int);
|
||||||
|
--exec $MYSQL_CHECK --all-in-1 --fix-table-names test "#mysql50#t1-1"
|
||||||
|
show tables like 't1-1';
|
||||||
|
drop table `t1-1`;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@@ -1947,8 +1947,50 @@ DROP DATABASE mysqldump_test_db;
|
|||||||
--echo # -- End of test case for Bug#32538.
|
--echo # -- End of test case for Bug#32538.
|
||||||
--echo
|
--echo
|
||||||
|
|
||||||
# We reset concurrent_inserts value to whatever it was at the start of the test
|
--echo #
|
||||||
# This line must be executed _after_ all test cases.
|
--echo # Bug#37377 Incorrect DROP TABLE statement in dump of a VIEW using --tab
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
create table t1 (a int);
|
||||||
|
create view v1 as select a from t1;
|
||||||
|
|
||||||
|
--exec $MYSQL_DUMP --skip-comments --tab=$MYSQLTEST_VARDIR/tmp/ test t1 v1
|
||||||
|
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/t1.sql
|
||||||
|
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/v1.sql
|
||||||
|
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/t1.sql
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/t1.txt
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/v1.sql
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#28071 mysqlimport does not quote or escape table name
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists `load`;
|
||||||
|
--enable_warnings
|
||||||
|
create table `load` (a varchar(255));
|
||||||
|
|
||||||
|
--copy_file std_data/words.dat $MYSQLTEST_VARDIR/tmp/load.txt
|
||||||
|
|
||||||
|
--exec $MYSQL_IMPORT --ignore test $MYSQLTEST_VARDIR/tmp/load.txt
|
||||||
|
|
||||||
|
select count(*) from `load`;
|
||||||
|
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/load.txt
|
||||||
|
|
||||||
|
drop table `load`;
|
||||||
|
|
||||||
|
# We reset concurrent_inserts value to whatever it was at the start of the
|
||||||
|
# test This line must be executed _after_ all test cases.
|
||||||
SET @@GLOBAL.CONCURRENT_INSERT = @OLD_CONCURRENT_INSERT;
|
SET @@GLOBAL.CONCURRENT_INSERT = @OLD_CONCURRENT_INSERT;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1519,6 +1519,7 @@ public:
|
|||||||
ft_handler->please->close_search(ft_handler);
|
ft_handler->please->close_search(ft_handler);
|
||||||
ft_handler= 0;
|
ft_handler= 0;
|
||||||
concat_ws= 0;
|
concat_ws= 0;
|
||||||
|
table= 0; // required by Item_func_match::eq()
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
enum Functype functype() const { return FT_FUNC; }
|
enum Functype functype() const { return FT_FUNC; }
|
||||||
|
@@ -127,12 +127,12 @@ class Prepared_statement: public Statement
|
|||||||
public:
|
public:
|
||||||
enum flag_values
|
enum flag_values
|
||||||
{
|
{
|
||||||
IS_IN_USE= 1
|
IS_IN_USE= 1,
|
||||||
|
IS_SQL_PREPARE= 2
|
||||||
};
|
};
|
||||||
|
|
||||||
THD *thd;
|
THD *thd;
|
||||||
Select_fetch_protocol_binary result;
|
Select_fetch_protocol_binary result;
|
||||||
Protocol *protocol;
|
|
||||||
Item_param **param_array;
|
Item_param **param_array;
|
||||||
uint param_count;
|
uint param_count;
|
||||||
uint last_errno;
|
uint last_errno;
|
||||||
@@ -148,7 +148,7 @@ public:
|
|||||||
List<LEX_STRING>& varnames,
|
List<LEX_STRING>& varnames,
|
||||||
String *expanded_query);
|
String *expanded_query);
|
||||||
public:
|
public:
|
||||||
Prepared_statement(THD *thd_arg, Protocol *protocol_arg);
|
Prepared_statement(THD *thd_arg);
|
||||||
virtual ~Prepared_statement();
|
virtual ~Prepared_statement();
|
||||||
void setup_set_params();
|
void setup_set_params();
|
||||||
virtual Query_arena::Type type() const;
|
virtual Query_arena::Type type() const;
|
||||||
@@ -156,7 +156,8 @@ public:
|
|||||||
bool set_name(LEX_STRING *name);
|
bool set_name(LEX_STRING *name);
|
||||||
inline void close_cursor() { delete cursor; cursor= 0; }
|
inline void close_cursor() { delete cursor; cursor= 0; }
|
||||||
inline bool is_in_use() { return flags & (uint) IS_IN_USE; }
|
inline bool is_in_use() { return flags & (uint) IS_IN_USE; }
|
||||||
inline bool is_protocol_text() const { return protocol == &thd->protocol_text; }
|
inline bool is_sql_prepare() const { return flags & (uint) IS_SQL_PREPARE; }
|
||||||
|
void set_sql_prepare() { flags|= (uint) IS_SQL_PREPARE; }
|
||||||
bool prepare(const char *packet, uint packet_length);
|
bool prepare(const char *packet, uint packet_length);
|
||||||
bool execute_loop(String *expanded_query,
|
bool execute_loop(String *expanded_query,
|
||||||
bool open_cursor,
|
bool open_cursor,
|
||||||
@@ -1358,7 +1359,7 @@ static int mysql_test_select(Prepared_statement *stmt,
|
|||||||
*/
|
*/
|
||||||
if (unit->prepare(thd, 0, 0))
|
if (unit->prepare(thd, 0, 0))
|
||||||
goto error;
|
goto error;
|
||||||
if (!lex->describe && !stmt->is_protocol_text())
|
if (!lex->describe && !stmt->is_sql_prepare())
|
||||||
{
|
{
|
||||||
/* Make copy of item list, as change_columns may change it */
|
/* Make copy of item list, as change_columns may change it */
|
||||||
List<Item> fields(lex->select_lex.item_list);
|
List<Item> fields(lex->select_lex.item_list);
|
||||||
@@ -1988,7 +1989,7 @@ static bool check_prepared_statement(Prepared_statement *stmt)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (res == 0)
|
if (res == 0)
|
||||||
DBUG_RETURN(stmt->is_protocol_text() ?
|
DBUG_RETURN(stmt->is_sql_prepare() ?
|
||||||
FALSE : (send_prep_stmt(stmt, 0) || thd->protocol->flush()));
|
FALSE : (send_prep_stmt(stmt, 0) || thd->protocol->flush()));
|
||||||
error:
|
error:
|
||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
@@ -2058,6 +2059,7 @@ static bool init_param_array(Prepared_statement *stmt)
|
|||||||
|
|
||||||
void mysqld_stmt_prepare(THD *thd, const char *packet, uint packet_length)
|
void mysqld_stmt_prepare(THD *thd, const char *packet, uint packet_length)
|
||||||
{
|
{
|
||||||
|
Protocol *save_protocol= thd->protocol;
|
||||||
Prepared_statement *stmt;
|
Prepared_statement *stmt;
|
||||||
bool error;
|
bool error;
|
||||||
DBUG_ENTER("mysqld_stmt_prepare");
|
DBUG_ENTER("mysqld_stmt_prepare");
|
||||||
@@ -2067,7 +2069,7 @@ void mysqld_stmt_prepare(THD *thd, const char *packet, uint packet_length)
|
|||||||
/* First of all clear possible warnings from the previous command */
|
/* First of all clear possible warnings from the previous command */
|
||||||
mysql_reset_thd_for_next_command(thd);
|
mysql_reset_thd_for_next_command(thd);
|
||||||
|
|
||||||
if (! (stmt= new Prepared_statement(thd, &thd->protocol_binary)))
|
if (! (stmt= new Prepared_statement(thd)))
|
||||||
DBUG_VOID_RETURN; /* out of memory: error is set in Sql_alloc */
|
DBUG_VOID_RETURN; /* out of memory: error is set in Sql_alloc */
|
||||||
|
|
||||||
if (thd->stmt_map.insert(thd, stmt))
|
if (thd->stmt_map.insert(thd, stmt))
|
||||||
@@ -2084,6 +2086,8 @@ void mysqld_stmt_prepare(THD *thd, const char *packet, uint packet_length)
|
|||||||
sp_cache_flush_obsolete(&thd->sp_proc_cache);
|
sp_cache_flush_obsolete(&thd->sp_proc_cache);
|
||||||
sp_cache_flush_obsolete(&thd->sp_func_cache);
|
sp_cache_flush_obsolete(&thd->sp_func_cache);
|
||||||
|
|
||||||
|
thd->protocol= &thd->protocol_binary;
|
||||||
|
|
||||||
if (!(specialflag & SPECIAL_NO_PRIOR))
|
if (!(specialflag & SPECIAL_NO_PRIOR))
|
||||||
my_pthread_setprio(pthread_self(),QUERY_PRIOR);
|
my_pthread_setprio(pthread_self(),QUERY_PRIOR);
|
||||||
|
|
||||||
@@ -2097,6 +2101,9 @@ void mysqld_stmt_prepare(THD *thd, const char *packet, uint packet_length)
|
|||||||
/* Statement map deletes statement on erase */
|
/* Statement map deletes statement on erase */
|
||||||
thd->stmt_map.erase(stmt);
|
thd->stmt_map.erase(stmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
thd->protocol= save_protocol;
|
||||||
|
|
||||||
/* check_prepared_statemnt sends the metadata packet in case of success */
|
/* check_prepared_statemnt sends the metadata packet in case of success */
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
@@ -2229,7 +2236,6 @@ void mysql_sql_stmt_prepare(THD *thd)
|
|||||||
const char *query;
|
const char *query;
|
||||||
uint query_len= 0;
|
uint query_len= 0;
|
||||||
DBUG_ENTER("mysql_sql_stmt_prepare");
|
DBUG_ENTER("mysql_sql_stmt_prepare");
|
||||||
DBUG_ASSERT(thd->protocol == &thd->protocol_text);
|
|
||||||
|
|
||||||
if ((stmt= (Prepared_statement*) thd->stmt_map.find_by_name(name)))
|
if ((stmt= (Prepared_statement*) thd->stmt_map.find_by_name(name)))
|
||||||
{
|
{
|
||||||
@@ -2247,11 +2253,13 @@ void mysql_sql_stmt_prepare(THD *thd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (! (query= get_dynamic_sql_string(lex, &query_len)) ||
|
if (! (query= get_dynamic_sql_string(lex, &query_len)) ||
|
||||||
! (stmt= new Prepared_statement(thd, &thd->protocol_text)))
|
! (stmt= new Prepared_statement(thd)))
|
||||||
{
|
{
|
||||||
DBUG_VOID_RETURN; /* out of memory */
|
DBUG_VOID_RETURN; /* out of memory */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stmt->set_sql_prepare();
|
||||||
|
|
||||||
/* Set the name first, insert should know that this statement has a name */
|
/* Set the name first, insert should know that this statement has a name */
|
||||||
if (stmt->set_name(name))
|
if (stmt->set_name(name))
|
||||||
{
|
{
|
||||||
@@ -2431,6 +2439,7 @@ void mysqld_stmt_execute(THD *thd, char *packet_arg, uint packet_length)
|
|||||||
String expanded_query;
|
String expanded_query;
|
||||||
uchar *packet_end= packet + packet_length;
|
uchar *packet_end= packet + packet_length;
|
||||||
Prepared_statement *stmt;
|
Prepared_statement *stmt;
|
||||||
|
Protocol *save_protocol= thd->protocol;
|
||||||
bool open_cursor;
|
bool open_cursor;
|
||||||
DBUG_ENTER("mysqld_stmt_execute");
|
DBUG_ENTER("mysqld_stmt_execute");
|
||||||
|
|
||||||
@@ -2458,7 +2467,9 @@ void mysqld_stmt_execute(THD *thd, char *packet_arg, uint packet_length)
|
|||||||
|
|
||||||
open_cursor= test(flags & (ulong) CURSOR_TYPE_READ_ONLY);
|
open_cursor= test(flags & (ulong) CURSOR_TYPE_READ_ONLY);
|
||||||
|
|
||||||
|
thd->protocol= &thd->protocol_binary;
|
||||||
stmt->execute_loop(&expanded_query, open_cursor, packet, packet_end);
|
stmt->execute_loop(&expanded_query, open_cursor, packet, packet_end);
|
||||||
|
thd->protocol= save_protocol;
|
||||||
|
|
||||||
/* Close connection socket; for use with client testing (Bug#43560). */
|
/* Close connection socket; for use with client testing (Bug#43560). */
|
||||||
DBUG_EXECUTE_IF("close_conn_after_stmt_execute", vio_close(thd->net.vio););
|
DBUG_EXECUTE_IF("close_conn_after_stmt_execute", vio_close(thd->net.vio););
|
||||||
@@ -2814,12 +2825,11 @@ Select_fetch_protocol_binary::send_data(List<Item> &fields)
|
|||||||
Prepared_statement
|
Prepared_statement
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
Prepared_statement::Prepared_statement(THD *thd_arg, Protocol *protocol_arg)
|
Prepared_statement::Prepared_statement(THD *thd_arg)
|
||||||
:Statement(NULL, &main_mem_root,
|
:Statement(NULL, &main_mem_root,
|
||||||
INITIALIZED, ++thd_arg->statement_id_counter),
|
INITIALIZED, ++thd_arg->statement_id_counter),
|
||||||
thd(thd_arg),
|
thd(thd_arg),
|
||||||
result(thd_arg),
|
result(thd_arg),
|
||||||
protocol(protocol_arg),
|
|
||||||
param_array(0),
|
param_array(0),
|
||||||
param_count(0),
|
param_count(0),
|
||||||
last_errno(0),
|
last_errno(0),
|
||||||
@@ -3288,7 +3298,9 @@ Prepared_statement::reprepare()
|
|||||||
bool cur_db_changed;
|
bool cur_db_changed;
|
||||||
bool error;
|
bool error;
|
||||||
|
|
||||||
Prepared_statement copy(thd, &thd->protocol_text);
|
Prepared_statement copy(thd);
|
||||||
|
|
||||||
|
copy.set_sql_prepare(); /* To suppress sending metadata to the client. */
|
||||||
|
|
||||||
status_var_increment(thd->status_var.com_stmt_reprepare);
|
status_var_increment(thd->status_var.com_stmt_reprepare);
|
||||||
|
|
||||||
@@ -3346,7 +3358,7 @@ bool Prepared_statement::validate_metadata(Prepared_statement *copy)
|
|||||||
return FALSE -- the metadata of the original SELECT,
|
return FALSE -- the metadata of the original SELECT,
|
||||||
if any, has not been sent to the client.
|
if any, has not been sent to the client.
|
||||||
*/
|
*/
|
||||||
if (is_protocol_text() || lex->describe)
|
if (is_sql_prepare() || lex->describe)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (lex->select_lex.item_list.elements !=
|
if (lex->select_lex.item_list.elements !=
|
||||||
@@ -3409,7 +3421,6 @@ Prepared_statement::swap_prepared_statement(Prepared_statement *copy)
|
|||||||
DBUG_ASSERT(thd == copy->thd);
|
DBUG_ASSERT(thd == copy->thd);
|
||||||
last_error[0]= '\0';
|
last_error[0]= '\0';
|
||||||
last_errno= 0;
|
last_errno= 0;
|
||||||
/* Do not swap protocols, the copy always has protocol_text */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -3550,8 +3561,6 @@ bool Prepared_statement::execute(String *expanded_query, bool open_cursor)
|
|||||||
thd->stmt_arena= this;
|
thd->stmt_arena= this;
|
||||||
reinit_stmt_before_use(thd, lex);
|
reinit_stmt_before_use(thd, lex);
|
||||||
|
|
||||||
thd->protocol= protocol; /* activate stmt protocol */
|
|
||||||
|
|
||||||
/* Go! */
|
/* Go! */
|
||||||
|
|
||||||
if (open_cursor)
|
if (open_cursor)
|
||||||
@@ -3582,8 +3591,6 @@ bool Prepared_statement::execute(String *expanded_query, bool open_cursor)
|
|||||||
if (cur_db_changed)
|
if (cur_db_changed)
|
||||||
mysql_change_db(thd, &saved_cur_db_name, TRUE);
|
mysql_change_db(thd, &saved_cur_db_name, TRUE);
|
||||||
|
|
||||||
thd->protocol= &thd->protocol_text; /* use normal protocol */
|
|
||||||
|
|
||||||
/* Assert that if an error, no cursor is open */
|
/* Assert that if an error, no cursor is open */
|
||||||
DBUG_ASSERT(! (error && cursor));
|
DBUG_ASSERT(! (error && cursor));
|
||||||
|
|
||||||
|
@@ -1151,7 +1151,7 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
|
|||||||
{
|
{
|
||||||
const LEX_STRING *const db=
|
const LEX_STRING *const db=
|
||||||
table_list->schema_table ? &INFORMATION_SCHEMA_NAME : &table->s->db;
|
table_list->schema_table ? &INFORMATION_SCHEMA_NAME : &table->s->db;
|
||||||
if (strcmp(db->str, thd->db) != 0)
|
if (!thd->db || strcmp(db->str, thd->db))
|
||||||
{
|
{
|
||||||
append_identifier(thd, packet, db->str, db->length);
|
append_identifier(thd, packet, db->str, db->length);
|
||||||
packet->append(STRING_WITH_LEN("."));
|
packet->append(STRING_WITH_LEN("."));
|
||||||
|
@@ -47,6 +47,12 @@
|
|||||||
#include <myisam.h>
|
#include <myisam.h>
|
||||||
#include <myisammrg.h>
|
#include <myisammrg.h>
|
||||||
|
|
||||||
|
/* this is to get the bison compilation windows warnings out */
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
/* warning C4065: switch statement contains 'default' but no 'case' labels */
|
||||||
|
#pragma warning (disable : 4065)
|
||||||
|
#endif
|
||||||
|
|
||||||
int yylex(void *yylval, void *yythd);
|
int yylex(void *yylval, void *yythd);
|
||||||
|
|
||||||
const LEX_STRING null_lex_str= {0,0};
|
const LEX_STRING null_lex_str= {0,0};
|
||||||
|
@@ -17940,6 +17940,57 @@ static void test_bug41078(void)
|
|||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Bug#44495: Prepared Statement:
|
||||||
|
CALL p(<x>) - `thd->protocol == &thd->protocol_text' failed
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void test_bug44495()
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
MYSQL con;
|
||||||
|
MYSQL_STMT *stmt;
|
||||||
|
|
||||||
|
DBUG_ENTER("test_bug44495");
|
||||||
|
myheader("test_44495");
|
||||||
|
|
||||||
|
rc= mysql_query(mysql, "DROP PROCEDURE IF EXISTS p1");
|
||||||
|
myquery(rc);
|
||||||
|
|
||||||
|
rc= mysql_query(mysql, "CREATE PROCEDURE p1(IN arg VARCHAR(25))"
|
||||||
|
" BEGIN SET @stmt = CONCAT('SELECT \"', arg, '\"');"
|
||||||
|
" PREPARE ps1 FROM @stmt;"
|
||||||
|
" EXECUTE ps1;"
|
||||||
|
" DROP PREPARE ps1;"
|
||||||
|
"END;");
|
||||||
|
myquery(rc);
|
||||||
|
|
||||||
|
DIE_UNLESS(mysql_init(&con));
|
||||||
|
|
||||||
|
DIE_UNLESS(mysql_real_connect(&con, opt_host, opt_user, opt_password,
|
||||||
|
current_db, opt_port, opt_unix_socket,
|
||||||
|
CLIENT_MULTI_RESULTS));
|
||||||
|
|
||||||
|
stmt= mysql_simple_prepare(&con, "CALL p1('abc')");
|
||||||
|
check_stmt(stmt);
|
||||||
|
|
||||||
|
rc= mysql_stmt_execute(stmt);
|
||||||
|
check_execute(stmt, rc);
|
||||||
|
|
||||||
|
rc= my_process_stmt_result(stmt);
|
||||||
|
DIE_UNLESS(rc == 1);
|
||||||
|
|
||||||
|
mysql_stmt_close(stmt);
|
||||||
|
|
||||||
|
mysql_close(&con);
|
||||||
|
|
||||||
|
rc= mysql_query(mysql, "DROP PROCEDURE p1");
|
||||||
|
myquery(rc);
|
||||||
|
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Read and parse arguments and MySQL options from my.cnf
|
Read and parse arguments and MySQL options from my.cnf
|
||||||
*/
|
*/
|
||||||
@@ -18255,6 +18306,7 @@ static struct my_tests_st my_tests[]= {
|
|||||||
{ "test_bug36326", test_bug36326 },
|
{ "test_bug36326", test_bug36326 },
|
||||||
#endif
|
#endif
|
||||||
{ "test_bug41078", test_bug41078 },
|
{ "test_bug41078", test_bug41078 },
|
||||||
|
{ "test_bug44495", test_bug44495 },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user