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 @@
# along with this program; if not, write to the Free Software
# 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
)
...
...
client/mysql.cc
View file @
57a4275d
...
...
@@ -2302,8 +2302,10 @@ extern "C" char **new_mysql_completion (const char *text, int start, int end);
*/
#if defined(USE_NEW_READLINE_INTERFACE)
static
int
fake_magic_space
(
int
,
int
);
extern
"C"
char
*
no_completion
(
const
char
*
,
int
)
#elif defined(USE_LIBEDIT_INTERFACE)
static
int
fake_magic_space
(
const
char
*
,
int
);
extern
"C"
int
no_completion
(
const
char
*
,
int
)
#else
extern
"C"
char
*
no_completion
()
...
...
@@ -2380,6 +2382,18 @@ static int not_in_history(const char *line)
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
)
{
/* Allow conditional parsing of the ~/.inputrc file. */
...
...
@@ -2389,12 +2403,15 @@ static void initialize_readline (char *name)
#if defined(USE_NEW_READLINE_INTERFACE)
rl_attempted_completion_function
=
(
rl_completion_func_t
*
)
&
new_mysql_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)
#ifdef HAVE_LOCALE_H
setlocale
(
LC_ALL
,
""
);
/* so as libedit use isprint */
#endif
rl_attempted_completion_function
=
(
CPPFunction
*
)
&
new_mysql_completion
;
rl_completion_entry_function
=
&
no_completion
;
rl_add_defun
(
"magic-space"
,
(
Function
*
)
&
fake_magic_space
,
-
1
);
#else
rl_attempted_completion_function
=
(
CPPFunction
*
)
&
new_mysql_completion
;
rl_completion_entry_function
=
&
no_completion
;
...
...
@@ -3308,6 +3325,9 @@ print_table_data(MYSQL_RES *result)
uint
visible_length
;
uint
extra_padding
;
if
(
off
)
(
void
)
tee_fputs
(
" "
,
PAGER
);
if
(
cur
[
off
]
==
NULL
)
{
buffer
=
"NULL"
;
...
...
@@ -3342,7 +3362,7 @@ print_table_data(MYSQL_RES *result)
else
tee_print_sized_data
(
buffer
,
data_length
,
field_max_length
+
extra_padding
,
FALSE
);
}
tee_fputs
(
" |
"
,
PAGER
);
tee_fputs
(
" |"
,
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,
break
;
case
'b'
:
/* --basedir */
case
'v'
:
/* --verbose */
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 */
add_option
=
FALSE
;
break
;
...
...
client/mysqladmin.cc
View file @
57a4275d
...
...
@@ -24,7 +24,7 @@
#include <mysql.h>
#define ADMIN_VERSION "8.42"
#define MAX_MYSQL_VAR
256
#define MAX_MYSQL_VAR
512
#define SHUTDOWN_DEF_TIMEOUT 3600
/* Wait for shutdown */
#define MAX_TRUNC_LENGTH 3
...
...
@@ -371,7 +371,7 @@ int main(int argc,char *argv[])
}
else
{
while
(
!
interrupted
&&
(
!
opt_count_iterations
||
nr_iterations
)
)
while
(
!
interrupted
)
{
new_line
=
0
;
if
((
error
=
execute_commands
(
&
mysql
,
argc
,
commands
)))
...
...
@@ -395,11 +395,11 @@ int main(int argc,char *argv[])
}
if
(
interval
)
{
if
(
opt_count_iterations
&&
--
nr_iterations
==
0
)
break
;
sleep
(
interval
);
if
(
new_line
)
puts
(
""
);
if
(
opt_count_iterations
)
nr_iterations
--
;
}
else
break
;
...
...
@@ -743,6 +743,9 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
mysql_error
(
mysql
));
return
-
1
;
}
DBUG_ASSERT
(
mysql_num_rows
(
res
)
<
MAX_MYSQL_VAR
);
if
(
!
opt_vertical
)
print_header
(
res
);
else
...
...
client/mysqlcheck.c
View file @
57a4275d
...
...
@@ -442,7 +442,7 @@ static int process_selected_tables(char *db, char **table_names, int tables)
{
if
(
use_db
(
db
))
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`
...
...
@@ -536,7 +536,7 @@ static int process_all_tables_in_db(char *database)
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`
...
...
client/mysqldump.c
View file @
57a4275d
...
...
@@ -4810,7 +4810,8 @@ static my_bool get_view_structure(char *table, char* db)
result_table
);
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
)
{
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)
static
int
write_to_table
(
char
*
filename
,
MYSQL
*
mysql
)
{
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_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
"
,
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'"
,
opt_low_priority
?
"LOW_PRIORITY"
:
""
,
opt_local_file
?
"LOCAL"
:
""
,
hard_path
);
opt_local_file
?
"LOCAL"
:
""
,
escaped_name
);
end
=
strend
(
sql_statement
);
if
(
replace
)
end
=
strmov
(
end
,
" REPLACE"
);
if
(
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
)
end
=
strmov
(
end
,
" FIELDS"
);
...
...
client/mysqlslap.c
View file @
57a4275d
...
...
@@ -565,8 +565,7 @@ static struct my_option my_long_options[] =
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"csv"
,
OPT_SLAP_CSV
,
"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
,
OPT_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
NULL
,
NULL
,
0
,
GET_STR
,
OPT_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
#ifdef DBUG_OFF
{
"debug"
,
'#'
,
"This is a non-debug version. Catch this and exit."
,
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
);
debug_check_flag
=
1
;
break
;
case
OPT_SLAP_CSV
:
if
(
!
argument
)
argument
=
(
char
*
)
"-"
;
/* use stdout */
opt_csv_str
=
argument
;
break
;
#include <sslopt-case.h>
case
'V'
:
print_version
();
...
...
include/config-win.h
View file @
57a4275d
...
...
@@ -17,15 +17,6 @@
#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
/* Avoid endless warnings about sprintf() etc. being unsafe. */
#define _CRT_SECURE_NO_DEPRECATE 1
...
...
mysql-test/extra/binlog_tests/binlog.test
View file @
57a4275d
...
...
@@ -258,3 +258,15 @@ dec $it;
}
show
master
status
/* must show new binlog index after rotating */
;
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
awrd bwrd cwrd
awrd bwrd cwrd
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;
+----------------------+------------+--------+
| concat('>',col1,'<') | col2 | col3 |
+----------------------+------------+--------+
| >a < | b | 123421 |
| >a < | 0123456789 | 4 |
| >abcd< | | 4 |
| >a < | b | 123421 |
| >a < | 0123456789 | 4 |
| >abcd< | | 4 |
+----------------------+------------+--------+
+-------------------+
| __tañgè Ñãmé |
+-------------------+
| John Doe |
| John Doe |
+-------------------+
+-------------------+
| John Doe |
+-------------------+
| __tañgè Ñãmé |
| __tañgè Ñãmé |
+-------------------+
+------+------+---------------------------+
| i | j | k |
+------+------+---------------------------+
| 1 | NULL | NULL |
| NULL | NULL | <-----------------------> |
| NULL | NULL | <----- |
| NULL | NULL | Τη γλώσσα |
| NULL | NULL | ᛖᚴ ᚷᛖᛏ |
| 1 | NULL | NULL |
| NULL | NULL | <-----------------------> |
| NULL | NULL | <----- |
| NULL | NULL | Τη γλώσσα |
| NULL | NULL | ᛖᚴ ᚷᛖᛏ |
+------+------+---------------------------+
i j k
NULL 1 NULL
...
...
@@ -96,14 +96,14 @@ k int(11) YES NULL
+------+---+------+
| i | j | k |
+------+---+------+
| NULL | 1 | NULL |
| NULL | 1 | NULL |
+------+---+------+
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i | int(11) | YES | | NULL | |
| j | int(11) | NO | | NULL | |
| k | int(11) | YES | | NULL | |
| i | int(11) | YES | | NULL | |
| j | int(11) | NO | | NULL | |
| k | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
i s1
1 x
...
...
@@ -112,16 +112,16 @@ i s1
+------+------+
| i | s1 |
+------+------+
| 1 | x |
| 2 | NULL |
| 3 | |
| 1 | x |
| 2 | NULL |
| 3 | |
+------+------+
unhex('zz')
NULL
+-------------+
| unhex('zz') |
+-------------+
| NULL |
| NULL |
+-------------+
create table t1(a int, b varchar(255), c int);
Field Type Null Key Default Extra
...
...
mysql-test/r/mysqlcheck.result
View file @
57a4275d
...
...
@@ -186,4 +186,18 @@ a
500
DROP DATABASE `a@b`;
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
mysql-test/r/mysqldump.result
View file @
57a4275d
...
...
@@ -1991,7 +1991,7 @@ SET character_set_client = utf8;
`a` varchar(30)
) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client;
/*!50001 DROP TABLE `v2`*/;
/*!50001 DROP TABLE
IF EXISTS
`v2`*/;
/*!50001 DROP VIEW IF EXISTS `v2`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
...
...
@@ -2085,7 +2085,7 @@ SET character_set_client = utf8;
`a` int(11)
) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client;
/*!50001 DROP TABLE `v1`*/;
/*!50001 DROP TABLE
IF EXISTS
`v1`*/;
/*!50001 DROP VIEW IF EXISTS `v1`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
...
...
@@ -2159,7 +2159,7 @@ SET character_set_client = utf8;
`a` varchar(30)
) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client;
/*!50001 DROP TABLE `v2`*/;
/*!50001 DROP TABLE
IF EXISTS
`v2`*/;
/*!50001 DROP VIEW IF EXISTS `v2`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
...
...
@@ -2293,7 +2293,7 @@ SET character_set_client = utf8;
`c` varchar(30)
) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client;
/*!50001 DROP TABLE `v1`*/;
/*!50001 DROP TABLE
IF EXISTS
`v1`*/;
/*!50001 DROP VIEW IF EXISTS `v1`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!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_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
/*!50001 DROP TABLE `v2`*/;
/*!50001 DROP TABLE
IF EXISTS
`v2`*/;
/*!50001 DROP VIEW IF EXISTS `v2`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!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_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
/*!50001 DROP TABLE `v3`*/;
/*!50001 DROP TABLE
IF EXISTS
`v3`*/;
/*!50001 DROP VIEW IF EXISTS `v3`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
...
...
@@ -3054,7 +3054,7 @@ SET character_set_client = utf8;
SET character_set_client = @saved_cs_client;
USE `test`;
/*!50001 DROP TABLE `v0`*/;
/*!50001 DROP TABLE
IF EXISTS
`v0`*/;
/*!50001 DROP VIEW IF EXISTS `v0`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!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_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
/*!50001 DROP TABLE `v1`*/;
/*!50001 DROP TABLE
IF EXISTS
`v1`*/;
/*!50001 DROP VIEW IF EXISTS `v1`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!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_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
/*!50001 DROP TABLE `v2`*/;
/*!50001 DROP TABLE
IF EXISTS
`v2`*/;
/*!50001 DROP VIEW IF EXISTS `v2`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!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 v2 as select qty from v1;
mysqldump {
/*!50001 DROP TABLE `v1`*/;
/*!50001 DROP TABLE
IF EXISTS
`v1`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
/*!50001 SET @saved_col_connection = @@collation_connection */;
...
...
@@ -3335,7 +3335,7 @@ mysqldump {
/*!50001 SET collation_connection = @saved_col_connection */;
} mysqldump {
/*!50001 DROP TABLE `v2`*/;
/*!50001 DROP TABLE
IF EXISTS
`v2`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
/*!50001 SET @saved_col_connection = @@collation_connection */;
...
...
@@ -3434,7 +3434,7 @@ SET character_set_client = utf8;
SET character_set_client = @saved_cs_client;
USE `mysqldump_test_db`;
/*!50001 DROP TABLE `v1`*/;
/*!50001 DROP TABLE
IF EXISTS
`v1`*/;
/*!50001 DROP VIEW IF EXISTS `v1`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
...
...
@@ -3496,7 +3496,7 @@ SET character_set_client = @saved_cs_client;
USE `mysqldump_tables`;
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_results = @@character_set_results */;
/*!50001 SET @saved_col_connection = @@collation_connection */;
...
...
@@ -3885,7 +3885,7 @@ SET character_set_client = utf8;
`c` int(11)
) ENGINE=MyISAM */;
SET character_set_client = @saved_cs_client;
/*!50001 DROP TABLE `v2`*/;
/*!50001 DROP TABLE
IF EXISTS
`v2`*/;
/*!50001 DROP VIEW IF EXISTS `v2`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
...
...
@@ -4304,7 +4304,7 @@ SET character_set_client = utf8;
SET character_set_client = @saved_cs_client;
USE `mysqldump_test_db`;
/*!50001 DROP TABLE `v1`*/;
/*!50001 DROP TABLE
IF EXISTS
`v1`*/;
/*!50001 DROP VIEW IF EXISTS `v1`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
...
...
@@ -4430,6 +4430,25 @@ DROP DATABASE mysqldump_test_db;
# -- 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;
Bug #34861 - mysqldump with --tab gives weird output for triggers.
...
...
mysql-test/r/parser_not_embedded.result
View file @
57a4275d
...
...
@@ -5,45 +5,45 @@
+----------+--------+
| expected | result |
+----------+--------+
| 2 | 2 |
| 2 | 2 |
+----------+--------+
+----------+--------+
| expected | result |
+----------+--------+
| 1 | 1 |
| 1 | 1 |
+----------+--------+
+----------+--------+
| expected | result |
+----------+--------+
| 3 | 3 |
| 3 | 3 |
+----------+--------+
+----------+--------+
| expected | result |
+----------+--------+
| 2 | 2 |
| 2 | 2 |
+----------+--------+
+----------+--------+
| expected | result |
+----------+--------+
| 7 | 7 |
| 7 | 7 |
+----------+--------+
+----------+--------+
| expected | result |
+----------+--------+
| 8 | 8 |
| 8 | 8 |
+----------+--------+
+----------+--------+
| expected | result |
+----------+--------+
| 7 | 7 |
| 7 | 7 |
+----------+--------+
+----------+--------+
| expected | result |
+----------+--------+
| 4 | 4 |
| 4 | 4 |
+----------+--------+
+----------+--------+
| 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 */;
File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000002 106
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 */;
File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000002 106
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));
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
);
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`;
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
mysql-test/t/mysqldump.test
View file @
57a4275d
...
...
@@ -1947,8 +1947,50 @@ DROP DATABASE mysqldump_test_db;
--
echo
# -- End of test case for Bug#32538.
--
echo
# We reset concurrent_inserts value to whatever it was at the start of the test
# This line must be executed _after_ all test cases.
--
echo
#
--
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
;
...
...
sql/item_func.h
View file @
57a4275d
...
...
@@ -1519,6 +1519,7 @@ public:
ft_handler
->
please
->
close_search
(
ft_handler
);
ft_handler
=
0
;
concat_ws
=
0
;
table
=
0
;
// required by Item_func_match::eq()
DBUG_VOID_RETURN
;
}
enum
Functype
functype
()
const
{
return
FT_FUNC
;
}
...
...
sql/sql_prepare.cc
View file @
57a4275d
...
...
@@ -127,12 +127,12 @@ class Prepared_statement: public Statement
public:
enum
flag_values
{
IS_IN_USE
=
1
IS_IN_USE
=
1
,
IS_SQL_PREPARE
=
2
};
THD
*
thd
;
Select_fetch_protocol_binary
result
;
Protocol
*
protocol
;
Item_param
**
param_array
;
uint
param_count
;
uint
last_errno
;
...
...
@@ -148,7 +148,7 @@ public:
List
<
LEX_STRING
>&
varnames
,
String
*
expanded_query
);
public:
Prepared_statement
(
THD
*
thd_arg
,
Protocol
*
protocol_arg
);
Prepared_statement
(
THD
*
thd_arg
);
virtual
~
Prepared_statement
();
void
setup_set_params
();
virtual
Query_arena
::
Type
type
()
const
;
...
...
@@ -156,7 +156,8 @@ public:
bool
set_name
(
LEX_STRING
*
name
);
inline
void
close_cursor
()
{
delete
cursor
;
cursor
=
0
;
}
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
execute_loop
(
String
*
expanded_query
,
bool
open_cursor
,
...
...
@@ -1358,7 +1359,7 @@ static int mysql_test_select(Prepared_statement *stmt,
*/
if
(
unit
->
prepare
(
thd
,
0
,
0
))
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 */
List
<
Item
>
fields
(
lex
->
select_lex
.
item_list
);
...
...
@@ -1988,7 +1989,7 @@ static bool check_prepared_statement(Prepared_statement *stmt)
break
;
}
if
(
res
==
0
)
DBUG_RETURN
(
stmt
->
is_
protocol_text
()
?
DBUG_RETURN
(
stmt
->
is_
sql_prepare
()
?
FALSE
:
(
send_prep_stmt
(
stmt
,
0
)
||
thd
->
protocol
->
flush
()));
error:
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
)
{
Protocol
*
save_protocol
=
thd
->
protocol
;
Prepared_statement
*
stmt
;
bool
error
;
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 */
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 */
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_func_cache
);
thd
->
protocol
=
&
thd
->
protocol_binary
;
if
(
!
(
specialflag
&
SPECIAL_NO_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 */
thd
->
stmt_map
.
erase
(
stmt
);
}
thd
->
protocol
=
save_protocol
;
/* check_prepared_statemnt sends the metadata packet in case of success */
DBUG_VOID_RETURN
;
}
...
...
@@ -2229,7 +2236,6 @@ void mysql_sql_stmt_prepare(THD *thd)
const
char
*
query
;
uint
query_len
=
0
;
DBUG_ENTER
(
"mysql_sql_stmt_prepare"
);
DBUG_ASSERT
(
thd
->
protocol
==
&
thd
->
protocol_text
);
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
))
||
!
(
stmt
=
new
Prepared_statement
(
thd
,
&
thd
->
protocol_text
)))
!
(
stmt
=
new
Prepared_statement
(
thd
)))
{
DBUG_VOID_RETURN
;
/* out of memory */
}
stmt
->
set_sql_prepare
();
/* Set the name first, insert should know that this statement has a 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
;
uchar
*
packet_end
=
packet
+
packet_length
;
Prepared_statement
*
stmt
;
Protocol
*
save_protocol
=
thd
->
protocol
;
bool
open_cursor
;
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
);
thd
->
protocol
=
&
thd
->
protocol_binary
;
stmt
->
execute_loop
(
&
expanded_query
,
open_cursor
,
packet
,
packet_end
);
thd
->
protocol
=
save_protocol
;
/* Close connection socket; for use with client testing (Bug#43560). */
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
(
THD
*
thd_arg
,
Protocol
*
protocol_arg
)
Prepared_statement
::
Prepared_statement
(
THD
*
thd_arg
)
:
Statement
(
NULL
,
&
main_mem_root
,
INITIALIZED
,
++
thd_arg
->
statement_id_counter
),
thd
(
thd_arg
),
result
(
thd_arg
),
protocol
(
protocol_arg
),
param_array
(
0
),
param_count
(
0
),
last_errno
(
0
),
...
...
@@ -3288,7 +3298,9 @@ Prepared_statement::reprepare()
bool
cur_db_changed
;
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
);
...
...
@@ -3346,7 +3358,7 @@ bool Prepared_statement::validate_metadata(Prepared_statement *copy)
return FALSE -- the metadata of the original SELECT,
if any, has not been sent to the client.
*/
if
(
is_
protocol_text
()
||
lex
->
describe
)
if
(
is_
sql_prepare
()
||
lex
->
describe
)
return
FALSE
;
if
(
lex
->
select_lex
.
item_list
.
elements
!=
...
...
@@ -3409,7 +3421,6 @@ Prepared_statement::swap_prepared_statement(Prepared_statement *copy)
DBUG_ASSERT
(
thd
==
copy
->
thd
);
last_error
[
0
]
=
'\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
;
reinit_stmt_before_use
(
thd
,
lex
);
thd
->
protocol
=
protocol
;
/* activate stmt protocol */
/* Go! */
if
(
open_cursor
)
...
...
@@ -3582,8 +3591,6 @@ bool Prepared_statement::execute(String *expanded_query, bool open_cursor)
if
(
cur_db_changed
)
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 */
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,
{
const
LEX_STRING
*
const
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
);
packet
->
append
(
STRING_WITH_LEN
(
"."
));
...
...
sql/sql_yacc.yy
View file @
57a4275d
...
...
@@ -47,6 +47,12 @@
#include <myisam.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);
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)
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
*/
...
...
@@ -18255,6 +18306,7 @@ static struct my_tests_st my_tests[]= {
{
"test_bug36326"
,
test_bug36326
},
#endif
{
"test_bug41078"
,
test_bug41078
},
{
"test_bug44495"
,
test_bug44495
},
{
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