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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
7ae555c1
Commit
7ae555c1
authored
Sep 11, 2016
by
Sergei Golubchik
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'mysql/5.5' into 5.5
80% reverted
parents
b9631e31
754e7eff
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
25 additions
and
288 deletions
+25
-288
mysql-test/suite/innodb/r/innodb_bug54044.result
mysql-test/suite/innodb/r/innodb_bug54044.result
+11
-2
mysql-test/suite/innodb/t/innodb_bug54044.test
mysql-test/suite/innodb/t/innodb_bug54044.test
+8
-2
mysql-test/suite/perfschema/r/aggregate.result
mysql-test/suite/perfschema/r/aggregate.result
+0
-102
mysql-test/suite/perfschema/t/aggregate.test
mysql-test/suite/perfschema/t/aggregate.test
+0
-174
sql/item.cc
sql/item.cc
+1
-4
sql/net_serv.cc
sql/net_serv.cc
+3
-3
sql/sql_select.cc
sql/sql_select.cc
+1
-0
support-files/mysql.server.sh
support-files/mysql.server.sh
+1
-1
No files found.
mysql-test/suite/innodb/r/innodb_bug54044.result
View file @
7ae555c1
...
...
@@ -5,5 +5,14 @@ Table Create Table
table_54044 CREATE TEMPORARY TABLE `table_54044` (
`IF(NULL IS NOT NULL, NULL, NULL)` binary(0) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TEMPORARY TABLE tmp1 ENGINE = INNODB AS SELECT COALESCE(NULL, NULL, NULL);
CREATE TEMPORARY TABLE tmp2 ENGINE = INNODB AS SELECT GREATEST(NULL, NULL);
DROP TABLE table_54044;
CREATE TABLE tmp ENGINE = INNODB
AS SELECT COALESCE(NULL, NULL, NULL), GREATEST(NULL, NULL), NULL;
SHOW CREATE TABLE tmp;
Table Create Table
tmp CREATE TABLE `tmp` (
`COALESCE(NULL, NULL, NULL)` binary(0) DEFAULT NULL,
`GREATEST(NULL, NULL)` binary(0) DEFAULT NULL,
`NULL` binary(0) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE tmp;
mysql-test/suite/innodb/t/innodb_bug54044.test
View file @
7ae555c1
...
...
@@ -8,5 +8,11 @@
CREATE
TEMPORARY
TABLE
table_54044
ENGINE
=
INNODB
AS
SELECT
IF
(
NULL
IS
NOT
NULL
,
NULL
,
NULL
);
SHOW
CREATE
TABLE
table_54044
;
CREATE
TEMPORARY
TABLE
tmp1
ENGINE
=
INNODB
AS
SELECT
COALESCE
(
NULL
,
NULL
,
NULL
);
CREATE
TEMPORARY
TABLE
tmp2
ENGINE
=
INNODB
AS
SELECT
GREATEST
(
NULL
,
NULL
);
DROP
TABLE
table_54044
;
# This 'create table' should pass since it uses a Field_string of size 0.
CREATE
TABLE
tmp
ENGINE
=
INNODB
AS
SELECT
COALESCE
(
NULL
,
NULL
,
NULL
),
GREATEST
(
NULL
,
NULL
),
NULL
;
SHOW
CREATE
TABLE
tmp
;
DROP
TABLE
tmp
;
mysql-test/suite/perfschema/r/aggregate.result
deleted
100644 → 0
View file @
b9631e31
"General cleanup"
drop table if exists t1;
update performance_schema.setup_instruments set enabled = 'NO';
update performance_schema.setup_consumers set enabled = 'NO';
truncate table performance_schema.file_summary_by_event_name;
truncate table performance_schema.file_summary_by_instance;
truncate table performance_schema.events_waits_summary_global_by_event_name;
truncate table performance_schema.events_waits_summary_by_instance;
truncate table performance_schema.events_waits_summary_by_thread_by_event_name;
update performance_schema.setup_consumers set enabled = 'YES';
update performance_schema.setup_instruments
set enabled = 'YES', timed = 'YES';
create table t1 (
id INT PRIMARY KEY,
b CHAR(100) DEFAULT 'initial value')
ENGINE=MyISAM;
insert into t1 (id) values (1), (2), (3), (4), (5), (6), (7), (8);
update performance_schema.setup_instruments SET enabled = 'NO';
update performance_schema.setup_consumers set enabled = 'NO';
set @dump_all=FALSE;
"Verifying file aggregate consistency"
SELECT EVENT_NAME, e.COUNT_READ, SUM(i.COUNT_READ)
FROM performance_schema.file_summary_by_event_name AS e
JOIN performance_schema.file_summary_by_instance AS i USING (EVENT_NAME)
GROUP BY EVENT_NAME
HAVING (e.COUNT_READ <> SUM(i.COUNT_READ))
OR @dump_all;
EVENT_NAME COUNT_READ SUM(i.COUNT_READ)
SELECT EVENT_NAME, e.COUNT_WRITE, SUM(i.COUNT_WRITE)
FROM performance_schema.file_summary_by_event_name AS e
JOIN performance_schema.file_summary_by_instance AS i USING (EVENT_NAME)
GROUP BY EVENT_NAME
HAVING (e.COUNT_WRITE <> SUM(i.COUNT_WRITE))
OR @dump_all;
EVENT_NAME COUNT_WRITE SUM(i.COUNT_WRITE)
SELECT EVENT_NAME, e.SUM_NUMBER_OF_BYTES_READ, SUM(i.SUM_NUMBER_OF_BYTES_READ)
FROM performance_schema.file_summary_by_event_name AS e
JOIN performance_schema.file_summary_by_instance AS i USING (EVENT_NAME)
GROUP BY EVENT_NAME
HAVING (e.SUM_NUMBER_OF_BYTES_READ <> SUM(i.SUM_NUMBER_OF_BYTES_READ))
OR @dump_all;
EVENT_NAME SUM_NUMBER_OF_BYTES_READ SUM(i.SUM_NUMBER_OF_BYTES_READ)
SELECT EVENT_NAME, e.SUM_NUMBER_OF_BYTES_WRITE, SUM(i.SUM_NUMBER_OF_BYTES_WRITE)
FROM performance_schema.file_summary_by_event_name AS e
JOIN performance_schema.file_summary_by_instance AS i USING (EVENT_NAME)
GROUP BY EVENT_NAME
HAVING (e.SUM_NUMBER_OF_BYTES_WRITE <> SUM(i.SUM_NUMBER_OF_BYTES_WRITE))
OR @dump_all;
EVENT_NAME SUM_NUMBER_OF_BYTES_WRITE SUM(i.SUM_NUMBER_OF_BYTES_WRITE)
"Verifying waits aggregate consistency (instance)"
SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(i.SUM_TIMER_WAIT)
FROM performance_schema.events_waits_summary_global_by_event_name AS e
JOIN performance_schema.events_waits_summary_by_instance AS i USING (EVENT_NAME)
GROUP BY EVENT_NAME
HAVING (e.SUM_TIMER_WAIT < SUM(i.SUM_TIMER_WAIT))
OR @dump_all;
EVENT_NAME SUM_TIMER_WAIT SUM(i.SUM_TIMER_WAIT)
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(i.MIN_TIMER_WAIT)
FROM performance_schema.events_waits_summary_global_by_event_name AS e
JOIN performance_schema.events_waits_summary_by_instance AS i USING (EVENT_NAME)
GROUP BY EVENT_NAME
HAVING (e.MIN_TIMER_WAIT > MIN(i.MIN_TIMER_WAIT))
AND (MIN(i.MIN_TIMER_WAIT) != 0)
OR @dump_all;
EVENT_NAME MIN_TIMER_WAIT MIN(i.MIN_TIMER_WAIT)
SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(i.MAX_TIMER_WAIT)
FROM performance_schema.events_waits_summary_global_by_event_name AS e
JOIN performance_schema.events_waits_summary_by_instance AS i USING (EVENT_NAME)
GROUP BY EVENT_NAME
HAVING (e.MAX_TIMER_WAIT < MAX(i.MAX_TIMER_WAIT))
OR @dump_all;
EVENT_NAME MAX_TIMER_WAIT MAX(i.MAX_TIMER_WAIT)
"Verifying waits aggregate consistency (thread)"
SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(t.SUM_TIMER_WAIT)
FROM performance_schema.events_waits_summary_global_by_event_name AS e
JOIN performance_schema.events_waits_summary_by_thread_by_event_name AS t
USING (EVENT_NAME)
GROUP BY EVENT_NAME
HAVING (e.SUM_TIMER_WAIT < SUM(t.SUM_TIMER_WAIT))
OR @dump_all;
EVENT_NAME SUM_TIMER_WAIT SUM(t.SUM_TIMER_WAIT)
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(t.MIN_TIMER_WAIT)
FROM performance_schema.events_waits_summary_global_by_event_name AS e
JOIN performance_schema.events_waits_summary_by_thread_by_event_name AS t
USING (EVENT_NAME)
GROUP BY EVENT_NAME
HAVING (e.MIN_TIMER_WAIT > MIN(t.MIN_TIMER_WAIT))
AND (MIN(t.MIN_TIMER_WAIT) != 0)
OR @dump_all;
EVENT_NAME MIN_TIMER_WAIT MIN(t.MIN_TIMER_WAIT)
SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(t.MAX_TIMER_WAIT)
FROM performance_schema.events_waits_summary_global_by_event_name AS e
JOIN performance_schema.events_waits_summary_by_thread_by_event_name AS t
USING (EVENT_NAME)
GROUP BY EVENT_NAME
HAVING (e.MAX_TIMER_WAIT < MAX(t.MAX_TIMER_WAIT))
OR @dump_all;
EVENT_NAME MAX_TIMER_WAIT MAX(t.MAX_TIMER_WAIT)
update performance_schema.setup_consumers set enabled = 'YES';
update performance_schema.setup_instruments
set enabled = 'YES', timed = 'YES';
drop table test.t1;
mysql-test/suite/perfschema/t/aggregate.test
deleted
100644 → 0
View file @
b9631e31
# Tests for PERFORMANCE_SCHEMA
# Verify that statistics aggregated by different criteria are consistent.
--
source
include
/
not_embedded
.
inc
--
source
include
/
have_perfschema
.
inc
--
echo
"General cleanup"
--
disable_warnings
drop
table
if
exists
t1
;
--
enable_warnings
update
performance_schema
.
setup_instruments
set
enabled
=
'NO'
;
update
performance_schema
.
setup_consumers
set
enabled
=
'NO'
;
# Cleanup statistics
truncate
table
performance_schema
.
file_summary_by_event_name
;
truncate
table
performance_schema
.
file_summary_by_instance
;
truncate
table
performance_schema
.
events_waits_summary_global_by_event_name
;
truncate
table
performance_schema
.
events_waits_summary_by_instance
;
truncate
table
performance_schema
.
events_waits_summary_by_thread_by_event_name
;
# Start recording data
update
performance_schema
.
setup_consumers
set
enabled
=
'YES'
;
update
performance_schema
.
setup_instruments
set
enabled
=
'YES'
,
timed
=
'YES'
;
create
table
t1
(
id
INT
PRIMARY
KEY
,
b
CHAR
(
100
)
DEFAULT
'initial value'
)
ENGINE
=
MyISAM
;
insert
into
t1
(
id
)
values
(
1
),
(
2
),
(
3
),
(
4
),
(
5
),
(
6
),
(
7
),
(
8
);
# Stop recording data, so the select below don't add noise.
update
performance_schema
.
setup_instruments
SET
enabled
=
'NO'
;
# Disable all consumers, for long standing waits
update
performance_schema
.
setup_consumers
set
enabled
=
'NO'
;
# Helper to debug
set
@
dump_all
=
FALSE
;
# Note that in general:
# - COUNT/SUM/MAX(file_summary_by_event_name) >=
# COUNT/SUM/MAX(file_summary_by_instance).
# - MIN(file_summary_by_event_name) <=
# MIN(file_summary_by_instance).
# There will be equality only when file instances are not removed,
# aka when a file is not deleted from the file system,
# because doing so removes a row in file_summary_by_instance.
# Likewise:
# - COUNT/SUM/MAX(events_waits_summary_global_by_event_name) >=
# COUNT/SUM/MAX(events_waits_summary_by_instance)
# - MIN(events_waits_summary_global_by_event_name) <=
# MIN(events_waits_summary_by_instance)
# There will be equality only when an instrument instance
# is not removed, which is next to impossible to predictably guarantee
# in the server.
# For example, a MyISAM table removed from the table cache
# will cause a mysql_mutex_destroy on myisam/MYISAM_SHARE::intern_lock.
# Another example, a thread terminating will cause a mysql_mutex_destroy
# on sql/LOCK_delete
# Both cause a row to be deleted from events_waits_summary_by_instance.
# Likewise:
# - COUNT/SUM/MAX(events_waits_summary_global_by_event_name) >=
# COUNT/SUM/MAX(events_waits_summary_by_thread_by_event_name)
# - MIN(events_waits_summary_global_by_event_name) <=
# MIN(events_waits_summary_by_thread_by_event_name)
# There will be equality only when no thread is removed,
# that is if no thread disconnects, or no sub thread (for example insert
# delayed) ever completes.
# A thread completing will cause rows in
# events_waits_summary_by_thread_by_event_name to be removed.
--
echo
"Verifying file aggregate consistency"
# Since the code generating the load in this test does:
# - create table
# - insert
# - does not cause temporary tables to be used
# we can test for equality here for file aggregates.
# If any of these queries returns data, the test failed.
SELECT
EVENT_NAME
,
e
.
COUNT_READ
,
SUM
(
i
.
COUNT_READ
)
FROM
performance_schema
.
file_summary_by_event_name
AS
e
JOIN
performance_schema
.
file_summary_by_instance
AS
i
USING
(
EVENT_NAME
)
GROUP
BY
EVENT_NAME
HAVING
(
e
.
COUNT_READ
<>
SUM
(
i
.
COUNT_READ
))
OR
@
dump_all
;
SELECT
EVENT_NAME
,
e
.
COUNT_WRITE
,
SUM
(
i
.
COUNT_WRITE
)
FROM
performance_schema
.
file_summary_by_event_name
AS
e
JOIN
performance_schema
.
file_summary_by_instance
AS
i
USING
(
EVENT_NAME
)
GROUP
BY
EVENT_NAME
HAVING
(
e
.
COUNT_WRITE
<>
SUM
(
i
.
COUNT_WRITE
))
OR
@
dump_all
;
SELECT
EVENT_NAME
,
e
.
SUM_NUMBER_OF_BYTES_READ
,
SUM
(
i
.
SUM_NUMBER_OF_BYTES_READ
)
FROM
performance_schema
.
file_summary_by_event_name
AS
e
JOIN
performance_schema
.
file_summary_by_instance
AS
i
USING
(
EVENT_NAME
)
GROUP
BY
EVENT_NAME
HAVING
(
e
.
SUM_NUMBER_OF_BYTES_READ
<>
SUM
(
i
.
SUM_NUMBER_OF_BYTES_READ
))
OR
@
dump_all
;
SELECT
EVENT_NAME
,
e
.
SUM_NUMBER_OF_BYTES_WRITE
,
SUM
(
i
.
SUM_NUMBER_OF_BYTES_WRITE
)
FROM
performance_schema
.
file_summary_by_event_name
AS
e
JOIN
performance_schema
.
file_summary_by_instance
AS
i
USING
(
EVENT_NAME
)
GROUP
BY
EVENT_NAME
HAVING
(
e
.
SUM_NUMBER_OF_BYTES_WRITE
<>
SUM
(
i
.
SUM_NUMBER_OF_BYTES_WRITE
))
OR
@
dump_all
;
--
echo
"Verifying waits aggregate consistency (instance)"
SELECT
EVENT_NAME
,
e
.
SUM_TIMER_WAIT
,
SUM
(
i
.
SUM_TIMER_WAIT
)
FROM
performance_schema
.
events_waits_summary_global_by_event_name
AS
e
JOIN
performance_schema
.
events_waits_summary_by_instance
AS
i
USING
(
EVENT_NAME
)
GROUP
BY
EVENT_NAME
HAVING
(
e
.
SUM_TIMER_WAIT
<
SUM
(
i
.
SUM_TIMER_WAIT
))
OR
@
dump_all
;
SELECT
EVENT_NAME
,
e
.
MIN_TIMER_WAIT
,
MIN
(
i
.
MIN_TIMER_WAIT
)
FROM
performance_schema
.
events_waits_summary_global_by_event_name
AS
e
JOIN
performance_schema
.
events_waits_summary_by_instance
AS
i
USING
(
EVENT_NAME
)
GROUP
BY
EVENT_NAME
HAVING
(
e
.
MIN_TIMER_WAIT
>
MIN
(
i
.
MIN_TIMER_WAIT
))
AND
(
MIN
(
i
.
MIN_TIMER_WAIT
)
!=
0
)
OR
@
dump_all
;
SELECT
EVENT_NAME
,
e
.
MAX_TIMER_WAIT
,
MAX
(
i
.
MAX_TIMER_WAIT
)
FROM
performance_schema
.
events_waits_summary_global_by_event_name
AS
e
JOIN
performance_schema
.
events_waits_summary_by_instance
AS
i
USING
(
EVENT_NAME
)
GROUP
BY
EVENT_NAME
HAVING
(
e
.
MAX_TIMER_WAIT
<
MAX
(
i
.
MAX_TIMER_WAIT
))
OR
@
dump_all
;
--
echo
"Verifying waits aggregate consistency (thread)"
SELECT
EVENT_NAME
,
e
.
SUM_TIMER_WAIT
,
SUM
(
t
.
SUM_TIMER_WAIT
)
FROM
performance_schema
.
events_waits_summary_global_by_event_name
AS
e
JOIN
performance_schema
.
events_waits_summary_by_thread_by_event_name
AS
t
USING
(
EVENT_NAME
)
GROUP
BY
EVENT_NAME
HAVING
(
e
.
SUM_TIMER_WAIT
<
SUM
(
t
.
SUM_TIMER_WAIT
))
OR
@
dump_all
;
SELECT
EVENT_NAME
,
e
.
MIN_TIMER_WAIT
,
MIN
(
t
.
MIN_TIMER_WAIT
)
FROM
performance_schema
.
events_waits_summary_global_by_event_name
AS
e
JOIN
performance_schema
.
events_waits_summary_by_thread_by_event_name
AS
t
USING
(
EVENT_NAME
)
GROUP
BY
EVENT_NAME
HAVING
(
e
.
MIN_TIMER_WAIT
>
MIN
(
t
.
MIN_TIMER_WAIT
))
AND
(
MIN
(
t
.
MIN_TIMER_WAIT
)
!=
0
)
OR
@
dump_all
;
SELECT
EVENT_NAME
,
e
.
MAX_TIMER_WAIT
,
MAX
(
t
.
MAX_TIMER_WAIT
)
FROM
performance_schema
.
events_waits_summary_global_by_event_name
AS
e
JOIN
performance_schema
.
events_waits_summary_by_thread_by_event_name
AS
t
USING
(
EVENT_NAME
)
GROUP
BY
EVENT_NAME
HAVING
(
e
.
MAX_TIMER_WAIT
<
MAX
(
t
.
MAX_TIMER_WAIT
))
OR
@
dump_all
;
# Cleanup
update
performance_schema
.
setup_consumers
set
enabled
=
'YES'
;
update
performance_schema
.
setup_instruments
set
enabled
=
'YES'
,
timed
=
'YES'
;
drop
table
test
.
t1
;
sql/item.cc
View file @
7ae555c1
...
...
@@ -5902,10 +5902,6 @@ Field *Item::tmp_table_field_from_field_type(TABLE *table, bool fixed_length)
field
=
new
Field_double
((
uchar
*
)
0
,
max_length
,
null_ptr
,
0
,
Field
::
NONE
,
name
,
decimals
,
0
,
unsigned_flag
);
break
;
case
MYSQL_TYPE_NULL
:
field
=
new
Field_null
((
uchar
*
)
0
,
max_length
,
Field
::
NONE
,
name
,
&
my_charset_bin
);
break
;
case
MYSQL_TYPE_INT24
:
field
=
new
Field_medium
((
uchar
*
)
0
,
max_length
,
null_ptr
,
0
,
Field
::
NONE
,
name
,
0
,
unsigned_flag
);
...
...
@@ -5939,6 +5935,7 @@ Field *Item::tmp_table_field_from_field_type(TABLE *table, bool fixed_length)
DBUG_ASSERT
(
0
);
/* If something goes awfully wrong, it's better to get a string than die */
case
MYSQL_TYPE_STRING
:
case
MYSQL_TYPE_NULL
:
if
(
fixed_length
&&
!
too_big_for_varchar
())
{
field
=
new
Field_string
(
max_length
,
maybe_null
,
name
,
...
...
sql/net_serv.cc
View file @
7ae555c1
/* Copyright (c) 2000, 201
3
, Oracle and/or its affiliates.
Copyright (c) 2012,
Monty Program Ab
/* Copyright (c) 2000, 201
6
, Oracle and/or its affiliates.
Copyright (c) 2012,
2016, MariaDB
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
...
...
@@ -885,7 +885,7 @@ my_real_read(NET *net, size_t *complen)
my_progname
,
vio_errno
(
net
->
vio
));
}
#ifndef MYSQL_SERVER
if
(
vio_errno
(
net
->
vio
)
==
SOCKET_EINTR
)
if
(
(
long
)
length
<
0
&&
vio_errno
(
net
->
vio
)
==
SOCKET_EINTR
)
{
DBUG_PRINT
(
"warning"
,(
"Interrupted read. Retrying..."
));
continue
;
...
...
sql/sql_select.cc
View file @
7ae555c1
...
...
@@ -14833,6 +14833,7 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
case
Item
:
:
VARBIN_ITEM
:
case
Item
:
:
CACHE_ITEM
:
case
Item
:
:
EXPR_CACHE_ITEM
:
case
Item
:
:
PARAM_ITEM
:
if
(
make_copy_field
)
{
DBUG_ASSERT
(((
Item_result_field
*
)
item
)
->
result_field
);
...
...
support-files/mysql.server.sh
View file @
7ae555c1
...
...
@@ -308,7 +308,7 @@ case "$mode" in
then
# Give extra arguments to mysqld with the my.cnf file. This script
# may be overwritten at next upgrade.
$bindir
/mysqld_safe
--datadir
=
"
$datadir
"
--pid-file
=
"
$mysqld_pid_file_path
"
$other_args
>
/dev/null
2>&1
&
$bindir
/mysqld_safe
--datadir
=
"
$datadir
"
--pid-file
=
"
$mysqld_pid_file_path
"
$other_args
>
/dev/null &
wait_for_ready
;
return_value
=
$?
# Make lock for RedHat / SuSE
...
...
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