Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
MariaDB and MySQL Packaging Team
mariadb-5.5
Commits
28a18fef
Commit
28a18fef
authored
Jul 21, 2016
by
Otto Kekäläinen
Browse files
Merge tag 'upstream/5.5.50' into ubuntu-14.04
Upstream version 5.5.50
parents
3747036d
95c6357a
Changes
120
Show whitespace changes
Inline
Side-by-side
CMakeLists.txt
View file @
28a18fef
...
...
@@ -254,8 +254,10 @@ IF (ENABLE_GCOV AND NOT WIN32 AND NOT APPLE)
ENDIF
()
MY_CHECK_C_COMPILER_FLAG
(
-ggdb3 HAVE_GGDB3
)
SET
(
CMAKE_C_FLAGS_DEBUG
"
${
CMAKE_C_FLAGS_DEBUG
}
-ggdb3"
)
SET
(
CMAKE_CXX_FLAGS_DEBUG
"
${
CMAKE_CXX_FLAGS_DEBUG
}
-ggdb3"
)
IF
(
HAVE_GGDB3
)
SET
(
CMAKE_C_FLAGS_DEBUG
"
${
CMAKE_C_FLAGS_DEBUG
}
-ggdb3"
)
SET
(
CMAKE_CXX_FLAGS_DEBUG
"
${
CMAKE_CXX_FLAGS_DEBUG
}
-ggdb3"
)
ENDIF
()
OPTION
(
ENABLED_LOCAL_INFILE
"If we should should enable LOAD DATA LOCAL by default"
${
IF_WIN
}
)
...
...
Docs/INFO_SRC
View file @
28a18fef
commit:
0991e19e9d38f7475390276c0557c2390e4d93c9
date: 2016-0
4-20 20:25:46
+0
2
00
build-date: 2016-0
4-20 22:44:41
+0200
short:
0991e19e
commit:
12ae840375fe30da1c23647facaa0678858d6d92
date: 2016-0
6-16 22:04:24
+0
3
00
build-date: 2016-0
6-16 21:08:07
+0200
short:
12ae840
branch: HEAD
MySQL source 5.5.
49
MySQL source 5.5.
50
VERSION
View file @
28a18fef
MYSQL_VERSION_MAJOR=5
MYSQL_VERSION_MINOR=5
MYSQL_VERSION_PATCH=
49
MYSQL_VERSION_PATCH=
50
MYSQL_VERSION_EXTRA=
client/mysql.cc
View file @
28a18fef
...
...
@@ -4898,11 +4898,11 @@ put_info(const char *str,INFO_TYPE info_type, uint error, const char *sqlstate)
{
if
(
!
inited
)
{
int
errret
;
inited
=
1
;
#ifdef HAVE_SETUPTERM
int
errret
;
have_curses
=
setupterm
((
char
*
)
0
,
1
,
&
errret
)
!=
ERR
;
#endif
inited
=
1
;
}
if
(
info_type
==
INFO_ERROR
)
{
...
...
client/mysqladmin.cc
View file @
28a18fef
...
...
@@ -232,8 +232,6 @@ my_bool
get_one_option
(
int
optid
,
const
struct
my_option
*
opt
__attribute__
((
unused
)),
char
*
argument
)
{
int
error
=
0
;
switch
(
optid
)
{
case
'c'
:
opt_count_iterations
=
1
;
...
...
@@ -281,8 +279,8 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
break
;
case
'?'
:
case
'I'
:
/* Info */
error
++
;
break
;
usage
()
;
exit
(
0
)
;
case
OPT_CHARSETS_DIR
:
#if MYSQL_VERSION_ID > 32300
charsets_dir
=
argument
;
...
...
@@ -293,11 +291,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
opt
->
name
);
break
;
}
if
(
error
)
{
usage
();
exit
(
1
);
}
return
0
;
}
...
...
client/mysqlcheck.c
View file @
28a18fef
...
...
@@ -238,7 +238,7 @@ static void dbDisconnect(char *host);
static
void
DBerror
(
MYSQL
*
mysql
,
const
char
*
when
);
static
void
safe_exit
(
int
error
);
static
void
print_result
();
static
uin
t
fixed_name_length
(
const
char
*
name
);
static
size_
t
fixed_name_length
(
const
char
*
name
);
static
char
*
fix_table_name
(
char
*
dest
,
char
*
src
);
int
what_to_do
=
0
;
...
...
@@ -583,10 +583,10 @@ static int process_selected_tables(char *db, char **table_names, int tables)
}
/* process_selected_tables */
static
uin
t
fixed_name_length
(
const
char
*
name
)
static
size_
t
fixed_name_length
(
const
char
*
name
)
{
const
char
*
p
;
uin
t
extra_length
=
2
;
/* count the first/last backticks */
size_
t
extra_length
=
2
;
/* count the first/last backticks */
DBUG_ENTER
(
"fixed_name_length"
);
for
(
p
=
name
;
*
p
;
p
++
)
...
...
@@ -594,7 +594,7 @@ static uint fixed_name_length(const char *name)
if
(
*
p
==
'`'
)
extra_length
++
;
}
DBUG_RETURN
((
uin
t
)
((
p
-
name
)
+
extra_length
));
DBUG_RETURN
((
size_
t
)
((
p
-
name
)
+
extra_length
));
}
...
...
@@ -653,7 +653,7 @@ static int process_all_tables_in_db(char *database)
*/
char
*
tables
,
*
end
;
uin
t
tot_length
=
0
;
size_
t
tot_length
=
0
;
char
*
views
,
*
views_end
;
uint
tot_views_length
=
0
;
...
...
@@ -756,7 +756,9 @@ static int fix_table_storage_name(const char *name)
if
(
strncmp
(
name
,
"#mysql50#"
,
9
))
DBUG_RETURN
(
1
);
sprintf
(
qbuf
,
"RENAME TABLE `%s` TO `%s`"
,
name
,
name
+
9
);
my_snprintf
(
qbuf
,
sizeof
(
qbuf
),
"RENAME TABLE `%s` TO `%s`"
,
name
,
name
+
9
);
rc
=
run_query
(
qbuf
);
if
(
verbose
)
printf
(
"%-50s %s
\n
"
,
name
,
rc
?
"FAILED"
:
"OK"
);
...
...
@@ -771,7 +773,8 @@ static int fix_database_storage_name(const char *name)
if
(
strncmp
(
name
,
"#mysql50#"
,
9
))
DBUG_RETURN
(
1
);
sprintf
(
qbuf
,
"ALTER DATABASE `%s` UPGRADE DATA DIRECTORY NAME"
,
name
);
my_snprintf
(
qbuf
,
sizeof
(
qbuf
),
"ALTER DATABASE `%s` UPGRADE DATA DIRECTORY "
"NAME"
,
name
);
rc
=
run_query
(
qbuf
);
if
(
verbose
)
printf
(
"%-50s %s
\n
"
,
name
,
rc
?
"FAILED"
:
"OK"
);
...
...
@@ -791,7 +794,7 @@ static int rebuild_table(char *name)
ptr
=
strmov
(
query
,
"ALTER TABLE "
);
ptr
=
fix_table_name
(
ptr
,
name
);
ptr
=
strxmov
(
ptr
,
" FORCE"
,
NullS
);
if
(
mysql_real_query
(
sock
,
query
,
(
u
int
)(
ptr
-
query
)))
if
(
mysql_real_query
(
sock
,
query
,
(
u
long
)(
ptr
-
query
)))
{
fprintf
(
stderr
,
"Failed to %s
\n
"
,
query
);
fprintf
(
stderr
,
"Error: %s
\n
"
,
mysql_error
(
sock
));
...
...
@@ -850,7 +853,7 @@ static int handle_request_for_tables(char *tables, size_t length, my_bool view)
{
char
*
query
,
*
end
,
options
[
100
],
message
[
100
];
char
table_name_buff
[
NAME_CHAR_LEN
*
2
*
2
+
1
],
*
table_name
;
uin
t
query_length
=
0
;
size_
t
query_length
=
0
,
query_size
=
sizeof
(
char
)
*
(
length
+
110
)
;
const
char
*
op
=
0
;
const
char
*
tab_view
;
DBUG_ENTER
(
"handle_request_for_tables"
);
...
...
@@ -902,10 +905,12 @@ static int handle_request_for_tables(char *tables, size_t length, my_bool view)
DBUG_RETURN
(
fix_table_storage_name
(
tables
));
}
if
(
!
(
query
=
(
char
*
)
my_malloc
(
(
sizeof
(
char
)
*
(
length
+
110
))
,
MYF
(
MY_WME
))))
if
(
!
(
query
=
(
char
*
)
my_malloc
(
query_size
,
MYF
(
MY_WME
))))
DBUG_RETURN
(
1
);
if
(
opt_all_in_1
)
{
DBUG_ASSERT
(
strlen
(
op
)
+
strlen
(
tables
)
+
strlen
(
options
)
+
8
+
1
<=
query_size
);
/* No backticks here as we added them before */
query_length
=
sprintf
(
query
,
"%s%s%s %s"
,
op
,
tab_view
,
tables
,
options
);
...
...
@@ -921,7 +926,7 @@ static int handle_request_for_tables(char *tables, size_t length, my_bool view)
(
int
)
(
ptr
-
org
)));
table_name
=
table_name_buff
;
ptr
=
strxmov
(
ptr
,
" "
,
options
,
NullS
);
query_length
=
(
uin
t
)
(
ptr
-
query
);
query_length
=
(
size_
t
)
(
ptr
-
query
);
}
if
(
mysql_real_query
(
sock
,
query
,
query_length
))
{
...
...
@@ -1040,7 +1045,10 @@ static void print_result()
prev_alter
[
0
]
=
0
;
}
else
strcpy
(
prev_alter
,
alter_txt
);
{
strncpy
(
prev_alter
,
alter_txt
,
MAX_ALTER_STR_SIZE
-
1
);
prev_alter
[
MAX_ALTER_STR_SIZE
-
1
]
=
0
;
}
}
}
}
...
...
@@ -1193,7 +1201,7 @@ int main(int argc, char **argv)
process_databases
(
argv
);
if
(
opt_auto_repair
)
{
uin
t
i
;
size_
t
i
;
if
(
!
opt_silent
&&
(
tables4repair
.
elements
||
tables4rebuild
.
elements
))
puts
(
"
\n
Repairing tables"
);
...
...
client/mysqldump.c
View file @
28a18fef
...
...
@@ -89,7 +89,7 @@
static
void
add_load_option
(
DYNAMIC_STRING
*
str
,
const
char
*
option
,
const
char
*
option_value
);
static
ulong
find_set
(
TYPELIB
*
lib
,
const
char
*
x
,
uin
t
length
,
static
ulong
find_set
(
TYPELIB
*
lib
,
const
char
*
x
,
size_
t
length
,
char
**
err_pos
,
uint
*
err_len
);
static
char
*
alloc_query_str
(
ulong
size
);
...
...
@@ -862,7 +862,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
opt_set_charset
=
0
;
opt_compatible_mode_str
=
argument
;
opt_compatible_mode
=
find_set
(
&
compatible_mode_typelib
,
argument
,
(
uint
)
strlen
(
argument
),
argument
,
strlen
(
argument
),
&
err_ptr
,
&
err_len
);
if
(
err_len
)
{
...
...
@@ -872,7 +872,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
}
#if !defined(DBUG_OFF)
{
uin
t
size_for_sql_mode
=
0
;
size_
t
size_for_sql_mode
=
0
;
const
char
**
ptr
;
for
(
ptr
=
compatible_mode_names
;
*
ptr
;
ptr
++
)
size_for_sql_mode
+=
strlen
(
*
ptr
);
...
...
@@ -1143,8 +1143,8 @@ static int fetch_db_collation(const char *db_name,
break
;
}
strncpy
(
db_cl_name
,
db_cl_row
[
0
],
db_cl_size
);
db_cl_name
[
db_cl_size
-
1
]
=
0
;
/* just in case. */
strncpy
(
db_cl_name
,
db_cl_row
[
0
],
db_cl_size
-
1
);
db_cl_name
[
db_cl_size
-
1
]
=
0
;
}
while
(
FALSE
);
...
...
@@ -1193,7 +1193,7 @@ check_consistent_binlog_pos(char *binlog_pos_file, char *binlog_pos_offset)
}
static
char
*
my_case_str
(
const
char
*
str
,
uin
t
str_len
,
size_
t
str_len
,
const
char
*
token
,
uint
token_len
)
{
...
...
@@ -1409,7 +1409,7 @@ static int switch_character_set_results(MYSQL *mysql, const char *cs_name)
*/
static
char
*
cover_definer_clause
(
const
char
*
stmt_str
,
uin
t
stmt_length
,
size_
t
stmt_length
,
const
char
*
definer_version_str
,
uint
definer_version_length
,
const
char
*
stmt_version_str
,
...
...
@@ -1591,14 +1591,14 @@ static void dbDisconnect(char *host)
}
/* dbDisconnect */
static
void
unescape
(
FILE
*
file
,
char
*
pos
,
uin
t
length
)
static
void
unescape
(
FILE
*
file
,
char
*
pos
,
size_
t
length
)
{
char
*
tmp
;
DBUG_ENTER
(
"unescape"
);
if
(
!
(
tmp
=
(
char
*
)
my_malloc
(
length
*
2
+
1
,
MYF
(
MY_WME
))))
die
(
EX_MYSQLERR
,
"Couldn't allocate memory"
);
mysql_real_escape_string
(
&
mysql_connection
,
tmp
,
pos
,
length
);
mysql_real_escape_string
(
&
mysql_connection
,
tmp
,
pos
,
(
ulong
)
length
);
fputc
(
'\''
,
file
);
fputs
(
tmp
,
file
);
fputc
(
'\''
,
file
);
...
...
@@ -1712,7 +1712,7 @@ static char *quote_for_like(const char *name, char *buff)
Quote '<' '>' '&' '\"' chars and print a string to the xml_file.
*/
static
void
print_quoted_xml
(
FILE
*
xml_file
,
const
char
*
str
,
ulong
len
,
static
void
print_quoted_xml
(
FILE
*
xml_file
,
const
char
*
str
,
size_t
len
,
my_bool
is_attribute_name
)
{
const
char
*
end
;
...
...
@@ -1973,7 +1973,7 @@ static void print_xml_row(FILE *xml_file, const char *row_name,
squeezed to a single hyphen.
*/
static
void
print_xml_comment
(
FILE
*
xml_file
,
ulong
len
,
static
void
print_xml_comment
(
FILE
*
xml_file
,
size_t
len
,
const
char
*
comment_string
)
{
const
char
*
end
;
...
...
@@ -2090,7 +2090,7 @@ static uint dump_events_for_db(char *db)
DBUG_ENTER
(
"dump_events_for_db"
);
DBUG_PRINT
(
"enter"
,
(
"db: '%s'"
,
db
));
mysql_real_escape_string
(
mysql
,
db_name_buff
,
db
,
strlen
(
db
));
mysql_real_escape_string
(
mysql
,
db_name_buff
,
db
,
(
ulong
)
strlen
(
db
));
/* nice comments */
print_comment
(
sql_file
,
0
,
...
...
@@ -2209,6 +2209,7 @@ static uint dump_events_for_db(char *db)
(
const
char
*
)
(
query_str
!=
NULL
?
query_str
:
row
[
3
]),
(
const
char
*
)
delimiter
);
my_free
(
query_str
);
restore_time_zone
(
sql_file
,
delimiter
);
restore_sql_mode
(
sql_file
,
delimiter
);
...
...
@@ -2302,7 +2303,7 @@ static uint dump_routines_for_db(char *db)
DBUG_ENTER
(
"dump_routines_for_db"
);
DBUG_PRINT
(
"enter"
,
(
"db: '%s'"
,
db
));
mysql_real_escape_string
(
mysql
,
db_name_buff
,
db
,
strlen
(
db
));
mysql_real_escape_string
(
mysql
,
db_name_buff
,
db
,
(
ulong
)
strlen
(
db
));
/* nice comments */
print_comment
(
sql_file
,
0
,
...
...
@@ -2356,9 +2357,9 @@ static uint dump_routines_for_db(char *db)
if the user has EXECUTE privilege he see routine names, but NOT the
routine body of other routines that are not the creator of!
*/
DBUG_PRINT
(
"info"
,(
"length of body for %s row[2] '%s' is %
d
"
,
DBUG_PRINT
(
"info"
,(
"length of body for %s row[2] '%s' is %
zu
"
,
routine_name
,
row
[
2
]
?
row
[
2
]
:
"(null)"
,
row
[
2
]
?
(
int
)
strlen
(
row
[
2
])
:
0
));
row
[
2
]
?
strlen
(
row
[
2
])
:
0
));
if
(
row
[
2
]
==
NULL
)
{
print_comment
(
sql_file
,
1
,
"
\n
-- insufficient privileges to %s
\n
"
,
...
...
@@ -3918,7 +3919,7 @@ static int dump_tablespaces_for_tables(char *db, char **table_names, int tables)
int
i
;
char
name_buff
[
NAME_LEN
*
2
+
3
];
mysql_real_escape_string
(
mysql
,
name_buff
,
db
,
strlen
(
db
));
mysql_real_escape_string
(
mysql
,
name_buff
,
db
,
(
ulong
)
strlen
(
db
));
init_dynamic_string_checked
(
&
where
,
" AND TABLESPACE_NAME IN ("
"SELECT DISTINCT TABLESPACE_NAME FROM"
...
...
@@ -3931,7 +3932,7 @@ static int dump_tablespaces_for_tables(char *db, char **table_names, int tables)
for
(
i
=
0
;
i
<
tables
;
i
++
)
{
mysql_real_escape_string
(
mysql
,
name_buff
,
table_names
[
i
],
strlen
(
table_names
[
i
]));
table_names
[
i
],
(
ulong
)
strlen
(
table_names
[
i
]));
dynstr_append_checked
(
&
where
,
"'"
);
dynstr_append_checked
(
&
where
,
name_buff
);
...
...
@@ -3962,7 +3963,7 @@ static int dump_tablespaces_for_databases(char** databases)
{
char
db_name_buff
[
NAME_LEN
*
2
+
3
];
mysql_real_escape_string
(
mysql
,
db_name_buff
,
databases
[
i
],
strlen
(
databases
[
i
]));
databases
[
i
],
(
ulong
)
strlen
(
databases
[
i
]));
dynstr_append_checked
(
&
where
,
"'"
);
dynstr_append_checked
(
&
where
,
db_name_buff
);
dynstr_append_checked
(
&
where
,
"',"
);
...
...
@@ -5003,7 +5004,7 @@ static int start_transaction(MYSQL *mysql_con)
}
static
ulong
find_set
(
TYPELIB
*
lib
,
const
char
*
x
,
uin
t
length
,
static
ulong
find_set
(
TYPELIB
*
lib
,
const
char
*
x
,
size_
t
length
,
char
**
err_pos
,
uint
*
err_len
)
{
const
char
*
end
=
x
+
length
;
...
...
@@ -5061,7 +5062,7 @@ static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row,
fputc
(
' '
,
file
);
fputs
(
prefix
,
file
);
if
(
string_value
)
unescape
(
file
,
row
[
0
],
(
uint
)
strlen
(
row
[
0
]));
unescape
(
file
,
row
[
0
],
strlen
(
row
[
0
]));
else
fputs
(
row
[
0
],
file
);
check_io
(
file
);
...
...
@@ -5314,8 +5315,8 @@ static my_bool get_view_structure(char *table, char* db)
verbose_msg
(
"-- Retrieving view structure for table %s...
\n
"
,
table
);
#ifdef NOT_REALLY_USED_YET
sprintf
(
insert_pat
,
"SET SQL_QUOTE_SHOW_CREATE=
%d"
,
(
opt_quoted
||
opt_keywords
));
dynstr_append_checked
(
&
insert_pat
,
"SET SQL_QUOTE_SHOW_CREATE=
"
);
dynstr_append_checked
(
&
insert_pat
,
(
opt_quoted
||
opt_keywords
)
?
"1"
:
"0"
);
#endif
result_table
=
quote_name
(
table
,
table_buff
,
1
);
...
...
client/mysqlshow.c
View file @
28a18fef
...
...
@@ -51,9 +51,9 @@ static int list_tables(MYSQL *mysql,const char *db,const char *table);
static
int
list_table_status
(
MYSQL
*
mysql
,
const
char
*
db
,
const
char
*
table
);
static
int
list_fields
(
MYSQL
*
mysql
,
const
char
*
db
,
const
char
*
table
,
const
char
*
field
);
static
void
print_header
(
const
char
*
header
,
uin
t
head_length
,...);
static
void
print_row
(
const
char
*
header
,
uin
t
head_length
,...);
static
void
print_trailer
(
uin
t
length
,...);
static
void
print_header
(
const
char
*
header
,
size_
t
head_length
,...);
static
void
print_row
(
const
char
*
header
,
size_
t
head_length
,...);
static
void
print_trailer
(
size_
t
length
,...);
static
void
print_res_header
(
MYSQL_RES
*
result
);
static
void
print_res_top
(
MYSQL_RES
*
result
);
static
void
print_res_row
(
MYSQL_RES
*
result
,
MYSQL_ROW
cur
);
...
...
@@ -366,7 +366,8 @@ static int
list_dbs
(
MYSQL
*
mysql
,
const
char
*
wild
)
{
const
char
*
header
;
uint
length
,
counter
=
0
;
size_t
length
=
0
;
uint
counter
=
0
;
ulong
rowcount
=
0L
;
char
tables
[
NAME_LEN
+
1
],
rows
[
NAME_LEN
+
1
];
char
query
[
NAME_LEN
+
100
];
...
...
@@ -404,7 +405,7 @@ list_dbs(MYSQL *mysql,const char *wild)
printf
(
"Wildcard: %s
\n
"
,
wild
);
header
=
"Databases"
;
length
=
(
uint
)
strlen
(
header
);
length
=
strlen
(
header
);
field
=
mysql_fetch_field
(
result
);
if
(
length
<
field
->
max_length
)
length
=
field
->
max_length
;
...
...
@@ -492,7 +493,8 @@ static int
list_tables
(
MYSQL
*
mysql
,
const
char
*
db
,
const
char
*
table
)
{
const
char
*
header
;
uint
head_length
,
counter
=
0
;
size_t
head_length
;
uint
counter
=
0
;
char
query
[
NAME_LEN
+
100
],
rows
[
NAME_LEN
],
fields
[
16
];
MYSQL_FIELD
*
field
;
MYSQL_RES
*
result
;
...
...
@@ -529,7 +531,7 @@ list_tables(MYSQL *mysql,const char *db,const char *table)
putchar
(
'\n'
);
header
=
"Tables"
;
head_length
=
(
uint
)
strlen
(
header
);
head_length
=
strlen
(
header
);
field
=
mysql_fetch_field
(
result
);
if
(
head_length
<
field
->
max_length
)
head_length
=
field
->
max_length
;
...
...
@@ -647,7 +649,7 @@ list_table_status(MYSQL *mysql,const char *db,const char *wild)
len
=
sizeof
(
query
);
len
-=
my_snprintf
(
query
,
len
,
"show table status from `%s`"
,
db
);
if
(
wild
&&
wild
[
0
]
&&
len
)
strxnmov
(
query
+
strlen
(
query
),
len
,
" like '"
,
wild
,
"'"
,
NullS
);
strxnmov
(
query
+
strlen
(
query
),
len
-
1
,
" like '"
,
wild
,
"'"
,
NullS
);
if
(
mysql_query
(
mysql
,
query
)
||
!
(
result
=
mysql_store_result
(
mysql
)))
{
fprintf
(
stderr
,
"%s: Cannot get status for db: %s, table: %s: %s
\n
"
,
...
...
@@ -680,7 +682,7 @@ list_fields(MYSQL *mysql,const char *db,const char *table,
const
char
*
wild
)
{
char
query
[
NAME_LEN
+
100
];
in
t
len
;
size_
t
len
;
MYSQL_RES
*
result
;
MYSQL_ROW
row
;
ulong
UNINIT_VAR
(
rows
);
...
...
@@ -710,7 +712,7 @@ list_fields(MYSQL *mysql,const char *db,const char *table,
len
-=
my_snprintf
(
query
,
len
,
"show /*!32332 FULL */ columns from `%s`"
,
table
);
if
(
wild
&&
wild
[
0
]
&&
len
)
strxnmov
(
query
+
strlen
(
query
),
len
,
" like '"
,
wild
,
"'"
,
NullS
);
strxnmov
(
query
+
strlen
(
query
),
len
-
1
,
" like '"
,
wild
,
"'"
,
NullS
);
if
(
mysql_query
(
mysql
,
query
)
||
!
(
result
=
mysql_store_result
(
mysql
)))
{
fprintf
(
stderr
,
"%s: Cannot list columns in db: %s, table: %s: %s
\n
"
,
...
...
@@ -758,10 +760,10 @@ list_fields(MYSQL *mysql,const char *db,const char *table,
*****************************************************************************/
static
void
print_header
(
const
char
*
header
,
uin
t
head_length
,...)
print_header
(
const
char
*
header
,
size_
t
head_length
,...)
{
va_list
args
;
uin
t
length
,
i
,
str_length
,
pre_space
;
size_
t
length
,
i
,
str_length
,
pre_space
;
const
char
*
field
;
va_start
(
args
,
head_length
);
...
...
@@ -784,10 +786,10 @@ print_header(const char *header,uint head_length,...)
putchar
(
'|'
);
for
(;;)
{
str_length
=
(
uint
)
strlen
(
field
);
str_length
=
strlen
(
field
);
if
(
str_length
>
length
)
str_length
=
length
+
1
;
pre_space
=
(
uint
)
(((
int
)
length
-
(
int
)
str_length
)
/
2
)
+
1
;
pre_space
=
((
length
-
str_length
)
/
2
)
+
1
;
for
(
i
=
0
;
i
<
pre_space
;
i
++
)
putchar
(
' '
);
for
(
i
=
0
;
i
<
str_length
;
i
++
)
...
...
@@ -821,11 +823,11 @@ print_header(const char *header,uint head_length,...)
static
void
print_row
(
const
char
*
header
,
uin
t
head_length
,...)
print_row
(
const
char
*
header
,
size_
t
head_length
,...)
{
va_list
args
;
const
char
*
field
;
uin
t
i
,
length
,
field_length
;
size_
t
i
,
length
,
field_length
;
va_start
(
args
,
head_length
);
field
=
header
;
length
=
head_length
;
...
...
@@ -834,7 +836,7 @@ print_row(const char *header,uint head_length,...)
putchar
(
'|'
);
putchar
(
' '
);
fputs
(
field
,
stdout
);
field_length
=
(
uint
)
strlen
(
field
);
field_length
=
strlen
(
field
);
for
(
i
=
field_length
;
i
<=
length
;
i
++
)
putchar
(
' '
);
if
(
!
(
field
=
va_arg
(
args
,
char
*
)))
...
...
@@ -848,10 +850,10 @@ print_row(const char *header,uint head_length,...)
static
void
print_trailer
(
uin
t
head_length
,...)
print_trailer
(
size_
t
head_length
,...)
{
va_list
args
;
uin
t
length
,
i
;
size_
t
length
,
i
;
va_start
(
args
,
head_length
);
length
=
head_length
;
...
...
@@ -894,7 +896,7 @@ static void print_res_top(MYSQL_RES *result)
mysql_field_seek
(
result
,
0
);
while
((
field
=
mysql_fetch_field
(
result
)))
{
if
((
length
=
(
uint
)
strlen
(
field
->
name
))
>
field
->
max_length
)
if
((
length
=
strlen
(
field
->
name
))
>
field
->
max_length
)
field
->
max_length
=
length
;
else
length
=
field
->
max_length
;
...
...
client/mysqltest.cc
View file @
28a18fef
...
...
@@ -5086,12 +5086,13 @@ static int my_kill(int pid, int sig)
{
#ifdef __WIN__
HANDLE
proc
;
if
((
proc
=
OpenProcess
(
PROCESS_TERMINATE
,
FALSE
,
pid
))
==
NULL
)
if
((
proc
=
OpenProcess
(
SYNCHRONIZE
|
PROCESS_TERMINATE
,
FALSE
,
pid
))
==
NULL
)
return
-
1
;
if
(
sig
==
0
)
{
DWORD
wait_result
=
WaitForSingleObject
(
proc
,
0
);
CloseHandle
(
proc
);
return
0
;
return
wait_result
==
WAIT_OBJECT_0
?-
1
:
0
;
}
(
void
)
TerminateProcess
(
proc
,
201
);
CloseHandle
(
proc
);
...
...
extra/mysql_waitpid.c
View file @
28a18fef
...
...
@@ -50,10 +50,11 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
switch
(
optid
)
{
case
'V'
:
printf
(
"%s version %s by Jani Tolonen
\n
"
,
progname
,
VER
);
exit
(
-
1
);
exit
(
0
);
case
'I'
:
case
'?'
:
usage
();
exit
(
0
);
}
return
0
;
}
...
...
@@ -69,7 +70,10 @@ int main(int argc, char *argv[])
exit
(
-
1
);
if
(
!
argv
[
0
]
||
!
argv
[
1
]
||
(
pid
=
atoi
(
argv
[
0
]))
<=
0
||
(
t
=
atoi
(
argv
[
1
]))
<=
0
)
{
usage
();
exit
(
-
1
);
}
for
(;
t
>
0
;
t
--
)
{
if
(
kill
((
pid_t
)
pid
,
sig
))
...
...
@@ -100,5 +104,4 @@ void usage(void)
printf
(
"integer arguments.
\n\n
"
);
printf
(
"Options:
\n
"
);
my_print_help
(
my_long_options
);
exit
(
-
1
);
}
extra/yassl/src/log.cpp
View file @
28a18fef
/*
Copyright (C) 2000-2007 MySQL AB
Use is subject to license terms
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
...
...
include/CMakeLists.txt
View file @
28a18fef
...
...
@@ -69,3 +69,9 @@ INSTALL(DIRECTORY . DESTINATION ${INSTALL_INCLUDEDIR}/private COMPONENT Developm
PATTERN CMakeFiles EXCLUDE
PATTERN mysql EXCLUDE
REGEX
"
\\
./(
${
EXCL_RE
}
$)"
EXCLUDE
)
INSTALL
(
DIRECTORY
${
CMAKE_CURRENT_BINARY_DIR
}
/. DESTINATION
${
INSTALL_INCLUDEDIR
}
/private COMPONENT Development
FILES_MATCHING PATTERN
"*.h"
PATTERN CMakeFiles EXCLUDE
PATTERN mysql EXCLUDE
REGEX
"
\\
./(
${
EXCL_RE
}
$)"
EXCLUDE
)
include/my_tree.h
View file @
28a18fef
/* Copyright (c) 2000, 201
0
, Oracle and/or its affiliates. All rights reserved.
/* Copyright (c) 2000, 201
6
, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
...
...
include/myisam.h
View file @
28a18fef
...
...
@@ -330,7 +330,8 @@ typedef struct st_sort_info
my_off_t
filelength
,
dupp
,
buff_length
;
ha_rows
max_records
;
uint
current_key
,
total_keys
;
uint
got_error
,
threads_running
;
volatile
uint
got_error
;
uint
threads_running
;
myf
myf_rw
;
enum
data_file_type
new_data_file_type
;
}
MI_SORT_INFO
;
...
...
include/violite.h
View file @
28a18fef
...
...
@@ -184,7 +184,7 @@ void vio_end(void);
/* shutdown(2) flags */
#ifndef SHUT_RD
#define SHUT_RD SD_
BOTH
#define SHUT_RD SD_
RECEIVE
#endif
/*
...
...
libmysqld/CMakeLists.txt
View file @
28a18fef
...
...
@@ -108,8 +108,12 @@ ADD_DEPENDENCIES(sql_embedded GenError GenServerSource)
# On Unix, it is libmysqld.a
IF
(
WIN32
)
SET
(
MYSQLSERVER_OUTPUT_NAME mysqlserver
)
SET
(
COMPONENT_MYSQLSERVER
"Embedded"
)
SET
(
COMPONENT_LIBMYSQLD
"Embedded"
)
ELSE
()
SET
(
MYSQLSERVER_OUTPUT_NAME mysqld
)
SET
(
COMPONENT_MYSQLSERVER
"Development"
)
SET
(
COMPONENT_LIBMYSQLD
"Server"
)
ENDIF
()
...
...
@@ -134,9 +138,9 @@ FOREACH(LIB ${LIBS})
ENDFOREACH
()
MERGE_LIBRARIES
(
mysqlserver STATIC
${
EMBEDDED_LIBS
}
OUTPUT_NAME
${
MYSQLSERVER_OUTPUT_NAME
}
COMPONENT
Development
)
OUTPUT_NAME
${
MYSQLSERVER_OUTPUT_NAME
}
COMPONENT
${
COMPONENT_MYSQLSERVER
}
)
INSTALL
(
FILES embedded_priv.h DESTINATION
${
INSTALL_INCLUDEDIR
}
/private COMPONENT
Development
)
INSTALL
(
FILES embedded_priv.h DESTINATION
${
INSTALL_INCLUDEDIR
}
/private COMPONENT
${
COMPONENT_MYSQLSERVER
}
)
# Visual Studio users need debug static library
IF
(
MSVC
)
...
...
@@ -163,7 +167,7 @@ ENDFOREACH()
IF
(
NOT DISABLE_SHARED
)
MERGE_LIBRARIES
(
libmysqld SHARED mysqlserver EXPORTS
${
EMBEDDED_API
}
COMPONENT
Server
)
COMPONENT
${
COMPONENT_LIBMYSQLD
}
)
IF
(
UNIX
)
# Name the shared library, handle versioning (provides same api as client
# library hence the same version)
...
...
mysql-test/include/search_pattern_in_file.inc
View file @
28a18fef
...
...
@@ -10,6 +10,10 @@
# The environment variables SEARCH_FILE and SEARCH_PATTERN must be set
# before sourcing this routine.
#
# Optionally, SEARCH_RANGE can be set to the max number of bytes of the file
# to search. If negative, it will search that many bytes at the end of the
# file. The default is to search only the first 50000 bytes of the file.
#
# In case of
# - SEARCH_FILE and/or SEARCH_PATTERN is not set
# - SEARCH_FILE cannot be opened
...
...
@@ -38,6 +42,7 @@
# --error 0,1
# --remove_file $error_log
# let SEARCH_FILE= $error_log;
# let SEARCH_RANGE= -50000;
# # Stop the server
# let $restart_file= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect;
# --exec echo "wait" > $restart_file
...
...
@@ -57,8 +62,18 @@ perl;
use
strict
;
my
$search_file
=
$ENV
{
'SEARCH_FILE'
}
or
die
"SEARCH_FILE not set"
;
my
$search_pattern
=
$ENV
{
'SEARCH_PATTERN'
}
or
die
"SEARCH_PATTERN not set"
;
my
$search_range
=
$ENV
{
'SEARCH_RANGE'
};
my
$file_content
;
$search_range
=
50000
unless
$search_range
=~
/-?
[
0
-
9
]
+/
;
open
(
FILE
,
"
$search_file
"
)
or
die
(
"Unable to open '
$search_file
': $!
\n
"
);
read
(
FILE
,
my
$file_content
,
50000
,
0
);
if
(
$search_range
>=
0
)
{
read
(
FILE
,
$file_content
,
$search_range
,
0
);
}
else
{
my
$size
=
-
s
$search_file
;
$search_range
=
-
$size
if
$size
>
-
$search_range
;
seek
(
FILE
,
$search_range
,
2
);
read
(
FILE
,
$file_content
,
-
$search_range
,
0
);
}
close
(
FILE
);
if
(
not
$file_content
=~
m
{
$search_pattern
}
)
{
die
(
"# ERROR: The file '
$search_file
' does not contain the expected pattern
$search_pattern
\n
->
$file_content
<-
\n
"
);
...
...
mysql-test/mysql-test-run.pl
View file @
28a18fef
...
...
@@ -1801,9 +1801,12 @@ sub set_build_thread_ports($) {
if
(
lc
(
$opt_build_thread
)
eq
'
auto
'
)
{
my
$found_free
=
0
;
$build_thread
=
300
;
# Start attempts from here
my
$build_thread_upper
=
$build_thread
+
(
$opt_parallel
>
1500
?
3000
:
2
*
$opt_parallel
)
+
300
;
while
(
!
$found_free
)
{
$build_thread
=
mtr_get_unique_id
(
$build_thread
,
349
);
$build_thread
=
mtr_get_unique_id
(
$build_thread
,
$build_thread_upper
);
if
(
!
defined
$build_thread
)
{
mtr_error
("
Could not get a unique build thread id
");
}
...
...
mysql-test/r/bigint.result
View file @
28a18fef
...
...
@@ -502,3 +502,9 @@ a
SELECT * FROM t1 WHERE a IN (0.8,0.9);
a
DROP TABLE t1;
#
# MDEV-9372 select 100 between 1 and 9223372036854775808 returns false
#
SELECT 100 BETWEEN 1 AND 9223372036854775808;
100 BETWEEN 1 AND 9223372036854775808
1
mysql-test/r/ctype_recoding.result
View file @
28a18fef
...
...
@@ -277,9 +277,40 @@ CREATE TABLE t1 ( a VARCHAR(1) );
INSERT INTO t1 VALUES ('m'),('n');
CREATE VIEW v1 AS SELECT 'w' ;
SELECT * FROM t1 WHERE a < ALL ( SELECT * FROM v1 );
ERROR HY000: Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation '<='
a
m
n
drop view v1;
drop table t1;
SET character_set_connection = default;
SET optimizer_switch= default;
#End of 5.3 tests
#
# Start of 5.5 tests
#
#
# MDEV-10181 Illegal mix of collation for a field and an ASCII string as a view field
#
SET NAMES utf8;
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
INSERT INTO t1 VALUES ('A'),('a'),('B'),('b');
CREATE VIEW v1 AS SELECT 'a';
SELECT * FROM v1,t1 where t1.a=v1.a;
a a
a A
a a
DROP VIEW v1;
DROP TABLE t1;
SET NAMES utf8;
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
INSERT INTO t1 VALUES ('a'),('b'),('c');
CREATE VIEW v1 AS SELECT 'a' AS a UNION SELECT 'b';
SELECT * FROM v1,t1 WHERE t1.a=v1.a;
a a
a a
b b
DROP VIEW v1;
DROP TABLE t1;
#
# End of 5.5 tests
#
Prev
1
2
3
4
5
6
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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