Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
57a4275d
Commit
57a4275d
authored
Jul 16, 2009
by
Kristofer Pettersson
Browse files
Options
Browse Files
Download
Plain Diff
Automerge
parents
fae95a49
88408fab
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
334 additions
and
87 deletions
+334
-87
CMakeLists.txt
CMakeLists.txt
+1
-1
client/mysql.cc
client/mysql.cc
+21
-1
client/mysql_upgrade.c
client/mysql_upgrade.c
+5
-1
client/mysqladmin.cc
client/mysqladmin.cc
+7
-4
client/mysqlcheck.c
client/mysqlcheck.c
+2
-2
client/mysqldump.c
client/mysqldump.c
+2
-1
client/mysqlimport.c
client/mysqlimport.c
+14
-3
client/mysqlslap.c
client/mysqlslap.c
+6
-2
include/config-win.h
include/config-win.h
+0
-9
mysql-test/extra/binlog_tests/binlog.test
mysql-test/extra/binlog_tests/binlog.test
+12
-0
mysql-test/r/fulltext.result
mysql-test/r/fulltext.result
+8
-0
mysql-test/r/mysql.result
mysql-test/r/mysql.result
+18
-18
mysql-test/r/mysqlcheck.result
mysql-test/r/mysqlcheck.result
+14
-0
mysql-test/r/mysqldump.result
mysql-test/r/mysqldump.result
+34
-15
mysql-test/r/parser_not_embedded.result
mysql-test/r/parser_not_embedded.result
+9
-9
mysql-test/suite/binlog/r/binlog_row_binlog.result
mysql-test/suite/binlog/r/binlog_row_binlog.result
+11
-0
mysql-test/suite/binlog/r/binlog_stm_binlog.result
mysql-test/suite/binlog/r/binlog_stm_binlog.result
+11
-0
mysql-test/t/fulltext.test
mysql-test/t/fulltext.test
+13
-0
mysql-test/t/mysqlcheck.test
mysql-test/t/mysqlcheck.test
+17
-0
mysql-test/t/mysqldump.test
mysql-test/t/mysqldump.test
+44
-2
sql/item_func.h
sql/item_func.h
+1
-0
sql/sql_prepare.cc
sql/sql_prepare.cc
+25
-18
sql/sql_show.cc
sql/sql_show.cc
+1
-1
sql/sql_yacc.yy
sql/sql_yacc.yy
+6
-0
tests/mysql_client_test.c
tests/mysql_client_test.c
+52
-0
No files found.
CMakeLists.txt
View file @
57a4275d
...
@@ -13,7 +13,7 @@
...
@@ -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
)
...
...
client/mysql.cc
View file @
57a4275d
...
@@ -2302,8 +2302,10 @@ extern "C" char **new_mysql_completion (const char *text, int start, int end);
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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
);
}
}
...
...
client/mysql_upgrade.c
View file @
57a4275d
...
@@ -253,8 +253,12 @@ get_one_option(int optid, const struct my_option *opt,
...
@@ -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
;
...
...
client/mysqladmin.cc
View file @
57a4275d
...
@@ -24,7 +24,7 @@
...
@@ -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[])
...
@@ -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[])
...
@@ -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)
...
@@ -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
...
...
client/mysqlcheck.c
View file @
57a4275d
...
@@ -442,7 +442,7 @@ static int process_selected_tables(char *db, char **table_names, int tables)
...
@@ -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)
...
@@ -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`
...
...
client/mysqldump.c
View file @
57a4275d
...
@@ -4810,7 +4810,8 @@ static my_bool get_view_structure(char *table, char* db)
...
@@ -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
"
,
...
...
client/mysqlimport.c
View file @
57a4275d
...
@@ -303,7 +303,8 @@ static int get_options(int *argc, char ***argv)
...
@@ -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)
...
@@ -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"
);
...
...
client/mysqlslap.c
View file @
57a4275d
...
@@ -565,8 +565,7 @@ static struct my_option my_long_options[] =
...
@@ -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)),
...
@@ -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
();
...
...
include/config-win.h
View file @
57a4275d
...
@@ -17,15 +17,6 @@
...
@@ -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
...
...
mysql-test/extra/binlog_tests/binlog.test
View file @
57a4275d
...
@@ -258,3 +258,15 @@ dec $it;
...
@@ -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
;
mysql-test/r/fulltext.result
View file @
57a4275d
...
@@ -543,3 +543,11 @@ awrd bwrd cwrd
...
@@ -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;
mysql-test/r/mysql.result
View file @
57a4275d
...
@@ -64,28 +64,28 @@ 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
...
@@ -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
...
@@ -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
...
...
mysql-test/r/mysqlcheck.result
View file @
57a4275d
...
@@ -186,4 +186,18 @@ a
...
@@ -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
mysql-test/r/mysqldump.result
View file @
57a4275d
...
@@ -1991,7 +1991,7 @@ SET character_set_client = utf8;
...
@@ -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;
...
@@ -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;
...
@@ -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;
...
@@ -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;
...
@@ -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;
...
@@ -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;
...
@@ -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`;
...
@@ -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`;
...
@@ -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);
...
@@ -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 {
...
@@ -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;
...
@@ -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;
...
@@ -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;
...
@@ -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;
...
@@ -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;
...
@@ -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.
...
...
mysql-test/r/parser_not_embedded.result
View file @
57a4275d
...
@@ -5,45 +5,45 @@
...
@@ -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 |
+----------+--------+
+----------+--------+
mysql-test/suite/binlog/r/binlog_row_binlog.result
View file @
57a4275d
...
@@ -1298,3 +1298,14 @@ show master status /* must show new binlog index after rotating */;
...
@@ -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;
mysql-test/suite/binlog/r/binlog_stm_binlog.result
View file @
57a4275d
...
@@ -773,3 +773,14 @@ show master status /* must show new binlog index after rotating */;
...
@@ -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;
mysql-test/t/fulltext.test
View file @
57a4275d
...
@@ -471,3 +471,16 @@ CREATE TABLE t1(a VARCHAR(64), FULLTEXT(a));
...
@@ -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
;
mysql-test/t/mysqlcheck.test
View file @
57a4275d
...
@@ -193,5 +193,22 @@ DROP DATABASE `a@b`;
...
@@ -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
mysql-test/t/mysqldump.test
View file @
57a4275d
...
@@ -1947,8 +1947,50 @@ DROP DATABASE mysqldump_test_db;
...
@@ -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
;
...
...
sql/item_func.h
View file @
57a4275d
...
@@ -1519,6 +1519,7 @@ public:
...
@@ -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
;
}
...
...
sql/sql_prepare.cc
View file @
57a4275d
...
@@ -127,12 +127,12 @@ class Prepared_statement: public Statement
...
@@ -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:
...
@@ -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:
...
@@ -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,
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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()
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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
));
...
...
sql/sql_show.cc
View file @
57a4275d
...
@@ -1151,7 +1151,7 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
...
@@ -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
(
"."
));
...
...
sql/sql_yacc.yy
View file @
57a4275d
...
@@ -47,6 +47,12 @@
...
@@ -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};
...
...
tests/mysql_client_test.c
View file @
57a4275d
...
@@ -17940,6 +17940,57 @@ static void test_bug41078(void)
...
@@ -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[]= {
...
@@ -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
}
};
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment