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
050dd45b
Commit
050dd45b
authored
Feb 26, 2018
by
Otto Kekäläinen
Browse files
New upstream version 5.5.59
parent
f06c422f
Changes
149
Hide whitespace changes
Inline
Side-by-side
mysql-test/t/order_by.test
View file @
050dd45b
...
@@ -1756,6 +1756,44 @@ UNION
...
@@ -1756,6 +1756,44 @@ UNION
ORDER
BY
NULL
,
@
a0
:=
3
,
@
a1
:=
3
,
@
a2
:=
3
,
@
a3
:=
3
,
@
a4
:=
3
,
ORDER
BY
NULL
,
@
a0
:=
3
,
@
a1
:=
3
,
@
a2
:=
3
,
@
a3
:=
3
,
@
a4
:=
3
,
@
a5
:=
3
,
@
a6
:=
3
,
@
a7
:=
3
,
@
a8
:=
3
,
@
a9
:=
3
,
@
a10
:=
3
);
@
a5
:=
3
,
@
a6
:=
3
,
@
a7
:=
3
,
@
a8
:=
3
,
@
a9
:=
3
,
@
a10
:=
3
);
--
echo
#
--
echo
# mdev-6706: semi-join with duplicate weedout + ORDER BY
--
echo
#
CREATE
TABLE
t1
(
f1
VARCHAR
(
3
))
ENGINE
=
MyISAM
;
INSERT
INTO
t1
VALUES
(
'foo'
);
CREATE
TABLE
t2
(
f2
VARCHAR
(
3
))
ENGINE
=
MyISAM
;
INSERT
INTO
t2
VALUES
(
'bar'
),(
'baz'
);
CREATE
TABLE
t3
(
i3_key
INT
,
f3_key
VARCHAR
(
3
),
f3
VARCHAR
(
3
),
KEY
(
f3_key
,
i3_key
))
ENGINE
=
MyISAM
;
INSERT
INTO
t3
VALUES
(
0
,
'qux'
,
'qux'
),(
8
,
'bar'
,
'bar'
);
let
$q1
=
SELECT
CONCAT
(
f1
,
f2
)
AS
field
FROM
t1
,
t2
WHERE
f1
=
ANY
(
SELECT
f1
FROM
t1
LEFT
JOIN
(
t3
AS
t3a
,
t3
AS
t3b
)
ON
(
t3b
.
f3_key
=
t3a
.
f3
)
WHERE
t3a
.
f3
<
f1
OR
t3b
.
f3
!=
f1
);
let
$q2
=
SELECT
CONCAT
(
f1
,
f2
)
AS
field
FROM
t1
,
t2
WHERE
f1
=
ANY
(
SELECT
f1
FROM
t1
LEFT
JOIN
(
t3
AS
t3a
,
t3
AS
t3b
)
ON
(
t3b
.
f3_key
=
t3a
.
f3
)
WHERE
t3a
.
f3
<
f1
OR
t3b
.
f3
!=
f1
)
ORDER
BY
field
;
eval
$q1
;
eval
$q2
;
eval
EXPLAIN
EXTENDED
$q2
;
DROP
TABLE
t1
,
t2
,
t3
;
--
echo
End
of
5.5
tests
--
echo
End
of
5.5
tests
mysql-test/t/ps.test
View file @
050dd45b
...
@@ -3843,4 +3843,19 @@ deallocate prepare stmt;
...
@@ -3843,4 +3843,19 @@ deallocate prepare stmt;
drop
view
v1
,
v2
,
v3
;
drop
view
v1
,
v2
,
v3
;
drop
table
t1
,
t2
,
t3
;
drop
table
t1
,
t2
,
t3
;
--
echo
#
--
echo
# MDEV-10657: incorrect result returned with binary protocol
--
echo
# (prepared statements)
--
echo
#
create
table
t1
(
code
varchar
(
10
)
primary
key
);
INSERT
INTO
t1
(
code
)
VALUES
(
'LINE1'
),
(
'LINE2'
),
(
'LINE3'
);
SELECT
X
.
*
FROM
(
SELECT
CODE
,
RN
FROM
(
SELECT
A
.
CODE
,
@
cnt
:=
@
cnt
+
1
AS
RN
FROM
t1
A
,
(
SELECT
@
cnt
:=
0
)
C
)
T
)
X
;
drop
table
t1
;
--
echo
# End of 5.5 tests
--
echo
# End of 5.5 tests
mysql-test/t/query_cache_debug.test
View file @
050dd45b
...
@@ -319,3 +319,55 @@ RESET QUERY CACHE;
...
@@ -319,3 +319,55 @@ RESET QUERY CACHE;
DROP
TABLE
t1
;
DROP
TABLE
t1
;
SET
GLOBAL
query_cache_size
=
DEFAULT
;
SET
GLOBAL
query_cache_size
=
DEFAULT
;
SET
GLOBAL
query_cache_type
=
DEFAULT
;
SET
GLOBAL
query_cache_type
=
DEFAULT
;
--
echo
#
--
echo
# MDEV-14526: MariaDB keeps crashing under load when
--
echo
# query_cache_type is changed
--
echo
#
CREATE
TABLE
t1
(
`id`
int
(
10
)
NOT
NULL
AUTO_INCREMENT
,
`k`
int
(
10
)
default
'0'
,
PRIMARY
KEY
(
`id`
))
ENGINE
=
MyISAM
;
INSERT
IGNORE
INTO
t1
VALUES
(
NULL
,
1
),(
NULL
,
8
),(
NULL
,
NULL
),(
NULL
,
NULL
),(
NULL
,
4
),(
NULL
,
9
),(
NULL
,
7
),
(
NULL
,
3
),(
NULL
,
NULL
),(
NULL
,
2
),(
NULL
,
3
),(
NULL
,
NULL
),(
NULL
,
2
),(
NULL
,
7
),
(
NULL
,
1
),(
NULL
,
2
),(
NULL
,
4
),(
NULL
,
NULL
),(
NULL
,
1
),(
NULL
,
1
),(
NULL
,
4
);
SET
GLOBAL
query_cache_size
=
1024
*
1024
;
SET
GLOBAL
query_cache_type
=
1
;
--
connect
(
con2
,
localhost
,
root
,,
test
)
--
connect
(
con1
,
localhost
,
root
,,
test
)
set
debug_sync
=
"wait_in_query_cache_store_query SIGNAL parked WAIT_FOR go"
;
--
send
SELECT
DISTINCT
id
FROM
t1
WHERE
id
BETWEEN
5603
AND
16218
ORDER
BY
k
;
--
connection
default
set
debug_sync
=
"now WAIT_FOR parked"
;
--
connection
con2
--
send
SET
GLOBAL
query_cache_type
=
0
;
--
connection
default
set
debug_sync
=
"now SIGNAL go"
;
--
connection
con1
--
reap
--
connection
con2
--
reap
# Cleanup
--
disconnect
con1
--
disconnect
con2
--
connection
default
set
debug_sync
=
'RESET'
;
DROP
TABLE
t1
;
SEt
GLOBAL
query_cache_size
=
DEFAULT
;
SEt
GLOBAL
query_cache_type
=
DEFAULT
;
--
echo
# End of 5.5 tests
mysql-test/t/subselect.test
View file @
050dd45b
...
@@ -6033,3 +6033,31 @@ CREATE TABLE t2 (f2 INT, KEY(f2)) ENGINE=MyISAM;
...
@@ -6033,3 +6033,31 @@ CREATE TABLE t2 (f2 INT, KEY(f2)) ENGINE=MyISAM;
INSERT t2 VALUES (6),(9);
INSERT t2 VALUES (6),(9);
SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
drop table t1, t2;
drop table t1, t2;
--echo #
--echo # MDEV-13933: Wrong results in COUNT() query with EXISTS and exists_to_in
--echo # (5.5 test)
--echo #
SET @optimiser_switch_save= @@optimizer_switch;
CREATE TABLE t1 (a INT NOT NULL);
INSERT INTO t1 VALUES (1),(1),(1),(5),(5);
CREATE TABLE t2 (b INT);
INSERT INTO t2 VALUES (5),(1);
CREATE TABLE t3 (c INT, KEY(c));
INSERT INTO t3 VALUES (5),(5);
SET optimizer_switch='semijoin=on';
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
SET optimizer_switch='semijoin=off';
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
SET @@optimizer_switch= @optimiser_switch_save;
DROP TABLE t1, t2, t3;
--echo End of 5.5 tests
mysql-test/t/view.test
View file @
050dd45b
...
@@ -5578,6 +5578,18 @@ PREPARE stmt FROM 'REPLACE INTO v2 SELECT a FROM t3';
...
@@ -5578,6 +5578,18 @@ PREPARE stmt FROM 'REPLACE INTO v2 SELECT a FROM t3';
drop
view
v1
,
v2
;
drop
view
v1
,
v2
;
drop
table
t3
;
drop
table
t3
;
--
echo
#
--
echo
# MDEV-14619: VIEW and GROUP_CONCAT
--
echo
#
CREATE
TABLE
t1
(
str
text
);
INSERT
INTO
t1
VALUES
(
"My"
),(
"SQL"
);
CREATE
VIEW
v1
AS
SELECT
GROUP_CONCAT
(
str
SEPARATOR
'\\'
)
FROM
t1
;
SELECT
*
FROM
v1
;
SHOW
CREATE
VIEW
v1
;
drop
view
v1
;
drop
table
t1
;
--
echo
# -----------------------------------------------------------------
--
echo
# -----------------------------------------------------------------
--
echo
# -- End of 5.5 tests.
--
echo
# -- End of 5.5 tests.
--
echo
# -----------------------------------------------------------------
--
echo
# -----------------------------------------------------------------
...
...
mysql-test/t/xa.test
View file @
050dd45b
...
@@ -327,6 +327,20 @@ SELECT * FROM t1;
...
@@ -327,6 +327,20 @@ SELECT * FROM t1;
DROP
TABLE
t1
;
DROP
TABLE
t1
;
--
echo
#
--
echo
# MDEV-14609 XA Transction unable to ROLLBACK TO SAVEPOINT
--
echo
#
CREATE
TABLE
t1
(
c1
INT
)
ENGINE
=
INNODB
;
XA
START
'xa1'
;
SAVEPOINT
savepoint1
;
INSERT
INTO
t1
(
c1
)
VALUES
(
1
),(
2
),(
3
),(
4
);
ROLLBACK
TO
SAVEPOINT
savepoint1
;
XA
END
'xa1'
;
XA
ROLLBACK
'xa1'
;
DROP
TABLE
t1
;
--
echo
#
--
echo
#
--
echo
# Bug#12352846 - TRANS_XA_START(THD*):
--
echo
# Bug#12352846 - TRANS_XA_START(THD*):
--
echo
# ASSERTION THD->TRANSACTION.XID_STATE.XID.IS_NULL()
--
echo
# ASSERTION THD->TRANSACTION.XID_STATE.XID.IS_NULL()
...
...
mysys/default.c
View file @
050dd45b
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
/* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2011, 2018, MariaDB Corporation
This program is free software; you can redistribute it and/or modify
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
it under the terms of the GNU General Public License as published by
...
@@ -234,7 +235,7 @@ int my_search_option_files(const char *conf_file, int *argc, char ***argv,
...
@@ -234,7 +235,7 @@ int my_search_option_files(const char *conf_file, int *argc, char ***argv,
(
char
**
)
&
my_defaults_group_suffix
);
(
char
**
)
&
my_defaults_group_suffix
);
if
(
!
my_defaults_group_suffix
)
if
(
!
my_defaults_group_suffix
)
my_defaults_group_suffix
=
getenv
(
STRINGIFY_ARG
(
DEFAULT
_GROUP_SUFFIX
_ENV
)
);
my_defaults_group_suffix
=
getenv
(
"MYSQL
_GROUP_SUFFIX
"
);
if
(
forced_extra_defaults
&&
!
defaults_already_read
)
if
(
forced_extra_defaults
&&
!
defaults_already_read
)
{
{
...
...
mysys/my_lib.c
View file @
050dd45b
...
@@ -103,10 +103,6 @@ MY_DIR *my_dir(const char *path, myf MyFlags)
...
@@ -103,10 +103,6 @@ MY_DIR *my_dir(const char *path, myf MyFlags)
DBUG_ENTER
(
"my_dir"
);
DBUG_ENTER
(
"my_dir"
);
DBUG_PRINT
(
"my"
,(
"path: '%s' MyFlags: %d"
,
path
,
MyFlags
));
DBUG_PRINT
(
"my"
,(
"path: '%s' MyFlags: %d"
,
path
,
MyFlags
));
#if !defined(HAVE_READDIR_R)
mysql_mutex_lock
(
&
THR_LOCK_open
);
#endif
dirp
=
opendir
(
directory_file_name
(
tmp_path
,(
char
*
)
path
));
dirp
=
opendir
(
directory_file_name
(
tmp_path
,(
char
*
)
path
));
#if defined(__amiga__)
#if defined(__amiga__)
if
((
dirp
->
dd_fd
)
<
0
)
/* Directory doesn't exists */
if
((
dirp
->
dd_fd
)
<
0
)
/* Directory doesn't exists */
...
@@ -162,9 +158,6 @@ MY_DIR *my_dir(const char *path, myf MyFlags)
...
@@ -162,9 +158,6 @@ MY_DIR *my_dir(const char *path, myf MyFlags)
}
}
(
void
)
closedir
(
dirp
);
(
void
)
closedir
(
dirp
);
#if !defined(HAVE_READDIR_R)
mysql_mutex_unlock
(
&
THR_LOCK_open
);
#endif
result
->
dir_entry
=
(
FILEINFO
*
)
dir_entries_storage
->
buffer
;
result
->
dir_entry
=
(
FILEINFO
*
)
dir_entries_storage
->
buffer
;
result
->
number_off_files
=
dir_entries_storage
->
elements
;
result
->
number_off_files
=
dir_entries_storage
->
elements
;
...
@@ -174,9 +167,6 @@ MY_DIR *my_dir(const char *path, myf MyFlags)
...
@@ -174,9 +167,6 @@ MY_DIR *my_dir(const char *path, myf MyFlags)
DBUG_RETURN
(
result
);
DBUG_RETURN
(
result
);
error:
error:
#if !defined(HAVE_READDIR_R)
mysql_mutex_unlock
(
&
THR_LOCK_open
);
#endif
my_errno
=
errno
;
my_errno
=
errno
;
if
(
dirp
)
if
(
dirp
)
(
void
)
closedir
(
dirp
);
(
void
)
closedir
(
dirp
);
...
...
plugin/server_audit/server_audit.c
View file @
050dd45b
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
#define PLUGIN_VERSION 0x104
#define PLUGIN_VERSION 0x104
#define PLUGIN_STR_VERSION "1.4.
2
"
#define PLUGIN_STR_VERSION "1.4.
3
"
#define _my_thread_var loc_thread_var
#define _my_thread_var loc_thread_var
...
@@ -1122,6 +1122,21 @@ do { \
...
@@ -1122,6 +1122,21 @@ do { \
} while(0)
} while(0)
#define ESC_MAP_SIZE 0x60
static
const
char
esc_map
[
ESC_MAP_SIZE
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
'b'
,
't'
,
'n'
,
0
,
'f'
,
'r'
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
'\''
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
'\\'
,
0
,
0
,
0
};
static
char
escaped_char
(
char
c
)
{
return
((
unsigned
char
)
c
)
>=
ESC_MAP_SIZE
?
0
:
esc_map
[(
unsigned
char
)
c
];
}
static
void
setup_connection_initdb
(
struct
connection_info
*
cn
,
static
void
setup_connection_initdb
(
struct
connection_info
*
cn
,
...
@@ -1328,21 +1343,16 @@ static size_t escape_string(const char *str, unsigned int len,
...
@@ -1328,21 +1343,16 @@ static size_t escape_string(const char *str, unsigned int len,
const
char
*
res_end
=
result
+
result_len
-
2
;
const
char
*
res_end
=
result
+
result_len
-
2
;
while
(
len
)
while
(
len
)
{
{
char
esc_c
;
if
(
result
>=
res_end
)
if
(
result
>=
res_end
)
break
;
break
;
if
(
*
str
==
'\''
)
if
((
esc_c
=
escaped_char
(
*
str
)))
{
if
(
result
+
1
>=
res_end
)
break
;
*
(
result
++
)
=
'\\'
;
*
(
result
++
)
=
'\''
;
}
else
if
(
*
str
==
'\\'
)
{
{
if
(
result
+
1
>=
res_end
)
if
(
result
+
1
>=
res_end
)
break
;
break
;
*
(
result
++
)
=
'\\'
;
*
(
result
++
)
=
'\\'
;
*
(
result
++
)
=
'\\'
;
*
(
result
++
)
=
esc_c
;
}
}
else
if
(
is_space
(
*
str
))
else
if
(
is_space
(
*
str
))
*
(
result
++
)
=
' '
;
*
(
result
++
)
=
' '
;
...
@@ -1431,19 +1441,12 @@ static size_t escape_string_hide_passwords(const char *str, unsigned int len,
...
@@ -1431,19 +1441,12 @@ static size_t escape_string_hide_passwords(const char *str, unsigned int len,
no_password:
no_password:
if
(
result
>=
res_end
)
if
(
result
>=
res_end
)
break
;
break
;
if
(
*
str
==
'\''
)
if
(
(
b_char
=
escaped_char
(
*
str
))
)
{
{
if
(
result
+
1
>=
res_end
)
if
(
result
+
1
>=
res_end
)
break
;
break
;
*
(
result
++
)
=
'\\'
;
*
(
result
++
)
=
'\\'
;
*
(
result
++
)
=
'\''
;
*
(
result
++
)
=
b_char
;
}
else
if
(
*
str
==
'\\'
)
{
if
(
result
+
1
>=
res_end
)
break
;
*
(
result
++
)
=
'\\'
;
*
(
result
++
)
=
'\\'
;
}
}
else
if
(
is_space
(
*
str
))
else
if
(
is_space
(
*
str
))
*
(
result
++
)
=
' '
;
*
(
result
++
)
=
' '
;
...
...
scripts/mysql_install_db.sh
View file @
050dd45b
...
@@ -27,6 +27,7 @@ srcdir=""
...
@@ -27,6 +27,7 @@ srcdir=""
args
=
""
args
=
""
defaults
=
""
defaults
=
""
defaults_group_suffix
=
""
mysqld_opt
=
""
mysqld_opt
=
""
user
=
""
user
=
""
...
@@ -49,6 +50,9 @@ Usage: $0 [OPTIONS]
...
@@ -49,6 +50,9 @@ Usage: $0 [OPTIONS]
--defaults-extra-file=name
--defaults-extra-file=name
Read this file after the global files are read.
Read this file after the global files are read.
--defaults-file=name Only read default options from the given file name.
--defaults-file=name Only read default options from the given file name.
--defaults-group-suffix=name
In addition to the given groups, read also groups with
this suffix
--force Causes mysql_install_db to run even if DNS does not
--force Causes mysql_install_db to run even if DNS does not
work. In that case, grant table entries that
work. In that case, grant table entries that
normally use hostnames will use IP addresses.
normally use hostnames will use IP addresses.
...
@@ -129,6 +133,8 @@ parse_arguments()
...
@@ -129,6 +133,8 @@ parse_arguments()
--help
)
usage
;;
--help
)
usage
;;
--no-defaults
|
--defaults-file
=
*
|
--defaults-extra-file
=
*
)
--no-defaults
|
--defaults-file
=
*
|
--defaults-extra-file
=
*
)
defaults
=
"
$arg
"
;;
defaults
=
"
$arg
"
;;
--defaults-group-suffix
=
*
)
defaults_group_suffix
=
"
$arg
"
;;
--cross-bootstrap
|
--windows
)
--cross-bootstrap
|
--windows
)
# Used when building the MariaDB system tables on a different host than
# Used when building the MariaDB system tables on a different host than
...
@@ -257,7 +263,7 @@ fi
...
@@ -257,7 +263,7 @@ fi
# Now we can get arguments from the groups [mysqld] and [mysql_install_db]
# Now we can get arguments from the groups [mysqld] and [mysql_install_db]
# in the my.cfg file, then re-run to merge with command line arguments.
# in the my.cfg file, then re-run to merge with command line arguments.
parse_arguments
`
"
$print_defaults
"
$defaults
--mysqld
mysql_install_db
`
parse_arguments
`
"
$print_defaults
"
$defaults
$defaults_group_suffix
--mysqld
mysql_install_db
`
parse_arguments PICK-ARGS-FROM-ARGV
"
$@
"
parse_arguments PICK-ARGS-FROM-ARGV
"
$@
"
# Configure paths to support files
# Configure paths to support files
...
@@ -417,9 +423,9 @@ fi
...
@@ -417,9 +423,9 @@ fi
mysqld_bootstrap
=
"
${
MYSQLD_BOOTSTRAP
-
$mysqld
}
"
mysqld_bootstrap
=
"
${
MYSQLD_BOOTSTRAP
-
$mysqld
}
"
mysqld_install_cmd_line
()
mysqld_install_cmd_line
()
{
{
"
$mysqld_bootstrap
"
$defaults
"
$mysqld_opt
"
--bootstrap
\
"
$mysqld_bootstrap
"
$defaults
$defaults_group_suffix
"
$mysqld_opt
"
\
"--basedir=
$basedir
"
"--datadir=
$ldata
"
--log-warnings
=
0
--loose-skip-innodb
\
--bootstrap
"--basedir=
$basedir
"
"--datadir=
$ldata
"
--log-warnings
=
0
\
--loose-skip-ndbcluster
$args
--max_allowed_packet
=
8M
\
--loose-skip-innodb
--loose-skip-ndbcluster
$args
--max_allowed_packet
=
8M
\
--default-storage-engine
=
myisam
\
--default-storage-engine
=
myisam
\
--net_buffer_length
=
16K
--net_buffer_length
=
16K
}
}
...
...
scripts/mysqld_safe.sh
View file @
050dd45b
...
@@ -868,8 +868,8 @@ if expr "${-}" : '.*x' > /dev/null
...
@@ -868,8 +868,8 @@ if expr "${-}" : '.*x' > /dev/null
then
then
:
:
else
else
exec
1>
&-
exec
1>
/dev/null
exec
2>
&-
exec
2>
/dev/null
fi
fi
while
true
while
true
...
...
sql/CMakeLists.txt
View file @
050dd45b
# Copyright (c) 2006, 2014, Oracle and/or its affiliates.
# Copyright (c) 2006, 2014, Oracle and/or its affiliates.
# Copyright (c) 2010, 201
5
, MariaDB
# Copyright (c) 2010, 201
8
, MariaDB
#
#
# This program is free software; you can redistribute it and/or modify
# 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
# it under the terms of the GNU General Public License as published by
...
...
sql/field.cc
View file @
050dd45b
...
@@ -1758,7 +1758,7 @@ uint Field::fill_cache_field(CACHE_FIELD *copy)
...
@@ -1758,7 +1758,7 @@ uint Field::fill_cache_field(CACHE_FIELD *copy)
{
{
uint
store_length
;
uint
store_length
;
copy
->
str
=
ptr
;
copy
->
str
=
ptr
;
copy
->
length
=
pack_length
();
copy
->
length
=
pack_length
_in_rec
();
copy
->
field
=
this
;
copy
->
field
=
this
;
if
(
flags
&
BLOB_FLAG
)
if
(
flags
&
BLOB_FLAG
)
{
{
...
@@ -8422,7 +8422,7 @@ int Field_bit::cmp_max(const uchar *a, const uchar *b, uint max_len)
...
@@ -8422,7 +8422,7 @@ int Field_bit::cmp_max(const uchar *a, const uchar *b, uint max_len)
if
((
flag
=
(
int
)
(
bits_a
-
bits_b
)))
if
((
flag
=
(
int
)
(
bits_a
-
bits_b
)))
return
flag
;
return
flag
;
}
}
return
memcmp
(
a
,
b
,
field_length
);
return
memcmp
(
a
,
b
,
bytes_in_rec
);
}
}
...
@@ -8437,7 +8437,7 @@ int Field_bit::key_cmp(const uchar *str, uint length)
...
@@ -8437,7 +8437,7 @@ int Field_bit::key_cmp(const uchar *str, uint length)
str
++
;
str
++
;
length
--
;
length
--
;
}
}
return
memcmp
(
ptr
,
str
,
length
);
return
memcmp
(
ptr
,
str
,
bytes_in_rec
);
}
}
...
...
sql/field_conv.cc
View file @
050dd45b
...
@@ -589,7 +589,7 @@ void Copy_field::set(uchar *to,Field *from)
...
@@ -589,7 +589,7 @@ void Copy_field::set(uchar *to,Field *from)
{
{
from_ptr
=
from
->
ptr
;
from_ptr
=
from
->
ptr
;
to_ptr
=
to
;
to_ptr
=
to
;
from_length
=
from
->
pack_length
();
from_length
=
from
->
pack_length
_in_rec
();
if
(
from
->
maybe_null
())
if
(
from
->
maybe_null
())
{
{
from_null_ptr
=
from
->
null_ptr
;
from_null_ptr
=
from
->
null_ptr
;
...
@@ -640,9 +640,9 @@ void Copy_field::set(Field *to,Field *from,bool save)
...
@@ -640,9 +640,9 @@ void Copy_field::set(Field *to,Field *from,bool save)
from_field
=
from
;
from_field
=
from
;
to_field
=
to
;
to_field
=
to
;
from_ptr
=
from
->
ptr
;
from_ptr
=
from
->
ptr
;
from_length
=
from
->
pack_length
();
from_length
=
from
->
pack_length
_in_rec
();
to_ptr
=
to
->
ptr
;
to_ptr
=
to
->
ptr
;
to_length
=
to_field
->
pack_length
();
to_length
=
to_field
->
pack_length
_in_rec
();
// set up null handling
// set up null handling
from_null_ptr
=
to_null_ptr
=
0
;
from_null_ptr
=
to_null_ptr
=
0
;
...
...
sql/filesort.cc
View file @
050dd45b
...
@@ -210,7 +210,9 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length,
...
@@ -210,7 +210,9 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length,
{
{
ulonglong
keys
=
memory_available
/
(
param
.
rec_length
+
sizeof
(
char
*
));
ulonglong
keys
=
memory_available
/
(
param
.
rec_length
+
sizeof
(
char
*
));
table_sort
.
keys
=
(
uint
)
min
(
num_rows
,
keys
);
table_sort
.
keys
=
(
uint
)
min
(
num_rows
,
keys
);
sort_buff_sz
=
table_sort
.
keys
*
(
param
.
rec_length
+
sizeof
(
char
*
));
/* Cast to size_t to avoid overflow when result is greater than uint. */
sort_buff_sz
=
((
size_t
)
table_sort
.
keys
)
*
(
param
.
rec_length
+
sizeof
(
char
*
));
set_if_bigger
(
sort_buff_sz
,
param
.
rec_length
*
MERGEBUFF2
);
set_if_bigger
(
sort_buff_sz
,
param
.
rec_length
*
MERGEBUFF2
);
DBUG_EXECUTE_IF
(
"make_sort_keys_alloc_fail"
,
DBUG_EXECUTE_IF
(
"make_sort_keys_alloc_fail"
,
...
@@ -914,7 +916,8 @@ static void make_sortkey(register SORTPARAM *param,
...
@@ -914,7 +916,8 @@ static void make_sortkey(register SORTPARAM *param,
if
(
maybe_null
)
if
(
maybe_null
)
*
to
++=
1
;
*
to
++=
1
;
char
*
tmp_buffer
=
param
->
tmp_buffer
?
param
->
tmp_buffer
:
(
char
*
)
to
;
char
*
tmp_buffer
=
param
->
tmp_buffer
?
param
->
tmp_buffer
:
(
char
*
)
to
;
String
tmp
(
tmp_buffer
,
param
->
sort_length
,
cs
);
String
tmp
(
tmp_buffer
,
param
->
tmp_buffer
?
param
->
sort_length
:
sort_field
->
length
,
cs
);
String
*
res
=
item
->
str_result
(
&
tmp
);
String
*
res
=
item
->
str_result
(
&
tmp
);
if
(
!
res
)
if
(
!
res
)
{
{
...
...
sql/item.cc
View file @
050dd45b
/*
/*
Copyright (c) 2000, 2016, Oracle and/or its affiliates.
Copyright (c) 2000, 2016, Oracle and/or its affiliates.
Copyright (c) 2010, 201
7
, MariaDB Corporation
Copyright (c) 2010, 201
8
, MariaDB Corporation
This program is free software; you can redistribute it and/or modify
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
it under the terms of the GNU General Public License as published by
...
@@ -4771,7 +4771,8 @@ resolve_ref_in_select_and_group(THD *thd, Item_ident *ref, SELECT_LEX *select)
...
@@ -4771,7 +4771,8 @@ resolve_ref_in_select_and_group(THD *thd, Item_ident *ref, SELECT_LEX *select)
if
(
thd
->
variables
.
sql_mode
&
MODE_ONLY_FULL_GROUP_BY
&&
if
(
thd
->
variables
.
sql_mode
&
MODE_ONLY_FULL_GROUP_BY
&&
select
->
having_fix_field
&&
select
->
having_fix_field
&&
select_ref
!=
not_found_item
&&
!
group_by_ref
)
select_ref
!=
not_found_item
&&
!
group_by_ref
&&
!
ref
->
alias_name_used
)
{
{
/*
/*
Report the error if fields was found only in the SELECT item list and
Report the error if fields was found only in the SELECT item list and
...
@@ -8491,7 +8492,7 @@ Item *Item_default_value::transform(Item_transformer transformer, uchar *args)
...
@@ -8491,7 +8492,7 @@ Item *Item_default_value::transform(Item_transformer transformer, uchar *args)
bool
Item_insert_value
::
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
bool
Item_insert_value
::
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
{
{
return
item
->
type
()
==
INSERT_VALUE_ITEM
&&
return
item
->
type
()
==
INSERT_VALUE_ITEM
&&
((
Item_
defaul
t_value
*
)
item
)
->
arg
->
eq
(
arg
,
binary_cmp
);
((
Item_
inser
t_value
*
)
item
)
->
arg
->
eq
(
arg
,
binary_cmp
);
}
}
...
...
sql/item.h
View file @
050dd45b
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
#define SQL_ITEM_INCLUDED
#define SQL_ITEM_INCLUDED
/* Copyright (c) 2000, 2017, Oracle and/or its affiliates.
/* Copyright (c) 2000, 2017, Oracle and/or its affiliates.
Copyright (c) 2009, 201
7
, MariaDB
Copyright (c) 2009, 201
8
, MariaDB
Corporation
This program is free software; you can redistribute it and/or modify
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
it under the terms of the GNU General Public License as published by
...
...
sql/item_cmpfunc.cc
View file @
050dd45b
...
@@ -2001,6 +2001,19 @@ bool Item_func_opt_neg::eq(const Item *item, bool binary_cmp) const
...
@@ -2001,6 +2001,19 @@ bool Item_func_opt_neg::eq(const Item *item, bool binary_cmp) const
}
}
bool
Item_func_interval
::
fix_fields
(
THD
*
thd
,
Item
**
ref
)
{
if
(
Item_int_func
::
fix_fields
(
thd
,
ref
))
return
true
;
for
(
uint
i
=
0
;
i
<
row
->
cols
();
i
++
)
{
if
(
row
->
element_index
(
i
)
->
check_cols
(
1
))
return
true
;
}
return
false
;
}
void
Item_func_interval
::
fix_length_and_dec
()
void
Item_func_interval
::
fix_length_and_dec
()
{
{
uint
rows
=
row
->
cols
();
uint
rows
=
row
->
cols
();
...
...
sql/item_cmpfunc.h
View file @
050dd45b
...
@@ -728,6 +728,7 @@ class Item_func_interval :public Item_int_func
...
@@ -728,6 +728,7 @@ class Item_func_interval :public Item_int_func
{
{
allowed_arg_cols
=
0
;
// Fetch this value from first argument
allowed_arg_cols
=
0
;
// Fetch this value from first argument
}
}
bool
fix_fields
(
THD
*
,
Item
**
);
longlong
val_int
();
longlong
val_int
();
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"interval"
;
}
const
char
*
func_name
()
const
{
return
"interval"
;
}
...
...
sql/item_strfunc.cc
View file @
050dd45b
/*
/*
Copyright (c) 2000, 2017, Oracle and/or its affiliates.
Copyright (c) 2000, 2017, Oracle and/or its affiliates.
Copyright (c) 2009, 201
7
, MariaDB
Copyright (c) 2009, 201
8
, MariaDB
Corporation
This program is free software; you can redistribute it and/or modify
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
it under the terms of the GNU General Public License as published by
...
@@ -265,9 +265,9 @@ String *Item_func_sha2::val_str_ascii(String *str)
...
@@ -265,9 +265,9 @@ String *Item_func_sha2::val_str_ascii(String *str)
size_t
input_len
;
size_t
input_len
;
uint
digest_length
=
0
;
uint
digest_length
=
0
;
input_string
=
args
[
0
]
->
val_str
(
str
);
str
->
set_charset
(
&
my_charset_bin
);
str
->
set_charset
(
&
my_charset_bin
);
input_string
=
args
[
0
]
->
val_str
(
str
);
if
(
input_string
==
NULL
)
if
(
input_string
==
NULL
)
{
{
null_value
=
TRUE
;
null_value
=
TRUE
;
...
...
Prev
1
2
3
4
5
6
7
8
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