Merge tag 'mariadb-5.5.52' into 5.5-galera
This commit is contained in:
commit
81c13acfb3
2
VERSION
2
VERSION
@ -1,4 +1,4 @@
|
|||||||
MYSQL_VERSION_MAJOR=5
|
MYSQL_VERSION_MAJOR=5
|
||||||
MYSQL_VERSION_MINOR=5
|
MYSQL_VERSION_MINOR=5
|
||||||
MYSQL_VERSION_PATCH=51
|
MYSQL_VERSION_PATCH=52
|
||||||
MYSQL_VERSION_EXTRA=
|
MYSQL_VERSION_EXTRA=
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2010, 2013, Monty Program Ab.
|
Copyright (c) 2010, 2016, Monty Program Ab.
|
||||||
|
|
||||||
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
|
||||||
@ -246,7 +246,7 @@ extern my_bool my_use_symdir;
|
|||||||
extern ulong my_default_record_cache_size;
|
extern ulong my_default_record_cache_size;
|
||||||
extern my_bool my_disable_locking, my_disable_async_io,
|
extern my_bool my_disable_locking, my_disable_async_io,
|
||||||
my_disable_flush_key_blocks, my_disable_symlinks;
|
my_disable_flush_key_blocks, my_disable_symlinks;
|
||||||
extern my_bool my_disable_sync;
|
extern my_bool my_disable_sync, my_disable_copystat_in_redel;
|
||||||
extern char wild_many,wild_one,wild_prefix;
|
extern char wild_many,wild_one,wild_prefix;
|
||||||
extern const char *charsets_dir;
|
extern const char *charsets_dir;
|
||||||
/* from default.c */
|
/* from default.c */
|
||||||
|
@ -1269,6 +1269,9 @@ CHAR_LENGTH(TRIM(BOTH 0x61 FROM _utf32 0x00000061))
|
|||||||
SELECT CHAR_LENGTH(TRIM(BOTH 0x00 FROM _utf32 0x00000061));
|
SELECT CHAR_LENGTH(TRIM(BOTH 0x00 FROM _utf32 0x00000061));
|
||||||
CHAR_LENGTH(TRIM(BOTH 0x00 FROM _utf32 0x00000061))
|
CHAR_LENGTH(TRIM(BOTH 0x00 FROM _utf32 0x00000061))
|
||||||
1
|
1
|
||||||
|
select hex(lower(cast(0xffff0000 as char character set utf32))) as c;
|
||||||
|
c
|
||||||
|
FFFF0000
|
||||||
#
|
#
|
||||||
# End of 5.5 tests
|
# End of 5.5 tests
|
||||||
#
|
#
|
||||||
|
@ -286,3 +286,19 @@ F 28 28
|
|||||||
F 29 29
|
F 29 29
|
||||||
F 30 30
|
F 30 30
|
||||||
DROP TABLE t0,t1,t2;
|
DROP TABLE t0,t1,t2;
|
||||||
|
#
|
||||||
|
# MDEV-MariaDB daemon leaks memory with specific query
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (`voter_id` int(11) unsigned NOT NULL,
|
||||||
|
`language_id` int(11) unsigned NOT NULL DEFAULT '1'
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
CREATE TABLE t2 (`voter_id` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`serialized_c` mediumblob) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
insert into t2 values (1,repeat("a",1000)),(2,repeat("a",1000)),(3,repeat("b",1000)),(4,repeat("c",1000)),(4,repeat("b",1000));
|
||||||
|
SELECT GROUP_CONCAT(t1.language_id SEPARATOR ',') AS `translation_resources`, `d`.`serialized_c` FROM t2 AS `d` LEFT JOIN t1 ON `d`.`voter_id` = t1.`voter_id` GROUP BY `d`.`voter_id` ORDER BY 10-d.voter_id+RAND()*0;
|
||||||
|
translation_resources serialized_c
|
||||||
|
NULL cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
|
||||||
|
NULL bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
|
||||||
|
NULL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
NULL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
drop table t1,t2;
|
||||||
|
@ -3832,4 +3832,21 @@ test.m1 repair error Corrupt
|
|||||||
# Clean-up.
|
# Clean-up.
|
||||||
drop tables m1, t1, t4;
|
drop tables m1, t1, t4;
|
||||||
drop view t3;
|
drop view t3;
|
||||||
|
#
|
||||||
|
# MDEV-10424 - Assertion `ticket == __null' failed in
|
||||||
|
# MDL_request::set_type
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 INT) ENGINE=MyISAM;
|
||||||
|
CREATE TABLE tmerge (f1 INT) ENGINE=MERGE UNION=(t1);
|
||||||
|
PREPARE stmt FROM "ANALYZE TABLE tmerge, t1";
|
||||||
|
EXECUTE stmt;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.tmerge analyze note The storage engine for the table doesn't support analyze
|
||||||
|
test.t1 analyze status Table is already up to date
|
||||||
|
EXECUTE stmt;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.tmerge analyze note The storage engine for the table doesn't support analyze
|
||||||
|
test.t1 analyze status Table is already up to date
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
DROP TABLE t1, tmerge;
|
||||||
End of 5.5 tests
|
End of 5.5 tests
|
||||||
|
@ -4072,4 +4072,35 @@ id value
|
|||||||
deallocate prepare stmt;
|
deallocate prepare stmt;
|
||||||
SET SESSION sql_mode = @save_sql_mode;
|
SET SESSION sql_mode = @save_sql_mode;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
# End of 10.0 tests
|
#
|
||||||
|
# MDEV-8833: Crash of server on prepared statement with
|
||||||
|
# conversion to semi-join
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (column1 INT);
|
||||||
|
INSERT INTO t1 VALUES (3),(9);
|
||||||
|
CREATE TABLE t2 (column2 INT);
|
||||||
|
INSERT INTO t2 VALUES (1),(4);
|
||||||
|
CREATE TABLE t3 (column3 INT);
|
||||||
|
INSERT INTO t3 VALUES (6),(8);
|
||||||
|
CREATE TABLE t4 (column4 INT);
|
||||||
|
INSERT INTO t4 VALUES (2),(5);
|
||||||
|
PREPARE stmt FROM "SELECT ( SELECT MAX( table1.column1 ) AS field1
|
||||||
|
FROM t1 AS table1
|
||||||
|
WHERE table3.column3 IN ( SELECT table2.column2 AS field2 FROM t2 AS table2 )
|
||||||
|
) AS sq
|
||||||
|
FROM t3 AS table3, t4 AS table4";
|
||||||
|
EXECUTE stmt;
|
||||||
|
sq
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
EXECUTE stmt;
|
||||||
|
sq
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop table t1,t2,t3,t4;
|
||||||
|
# End of 5.5 tests
|
||||||
|
@ -14,3 +14,22 @@ this
|
|||||||
0
|
0
|
||||||
4294967295
|
4294967295
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a bigint unsigned, b mediumint unsigned);
|
||||||
|
insert t1 values (1,2),(0xffffffffffffffff,0xffffff);
|
||||||
|
select coalesce(a,b), coalesce(b,a) from t1;
|
||||||
|
coalesce(a,b) coalesce(b,a)
|
||||||
|
1 2
|
||||||
|
18446744073709551615 16777215
|
||||||
|
create table t2 as select a from t1 union select b from t1;
|
||||||
|
show create table t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`a` bigint(20) unsigned DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
18446744073709551615
|
||||||
|
2
|
||||||
|
16777215
|
||||||
|
drop table t1, t2;
|
||||||
|
@ -5,5 +5,14 @@ Table Create Table
|
|||||||
table_54044 CREATE TEMPORARY TABLE `table_54044` (
|
table_54044 CREATE TEMPORARY TABLE `table_54044` (
|
||||||
`IF(NULL IS NOT NULL, NULL, NULL)` binary(0) DEFAULT NULL
|
`IF(NULL IS NOT NULL, NULL, NULL)` binary(0) DEFAULT NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
CREATE TEMPORARY TABLE tmp1 ENGINE = INNODB AS SELECT COALESCE(NULL, NULL, NULL);
|
DROP TABLE table_54044;
|
||||||
CREATE TEMPORARY TABLE tmp2 ENGINE = INNODB AS SELECT GREATEST(NULL, NULL);
|
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;
|
||||||
|
@ -8,5 +8,11 @@
|
|||||||
CREATE TEMPORARY TABLE table_54044 ENGINE = INNODB
|
CREATE TEMPORARY TABLE table_54044 ENGINE = INNODB
|
||||||
AS SELECT IF(NULL IS NOT NULL, NULL, NULL);
|
AS SELECT IF(NULL IS NOT NULL, NULL, NULL);
|
||||||
SHOW CREATE TABLE table_54044;
|
SHOW CREATE TABLE table_54044;
|
||||||
CREATE TEMPORARY TABLE tmp1 ENGINE = INNODB AS SELECT COALESCE(NULL, NULL, NULL);
|
DROP TABLE table_54044;
|
||||||
CREATE TEMPORARY TABLE tmp2 ENGINE = INNODB AS SELECT GREATEST(NULL, NULL);
|
|
||||||
|
# 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;
|
||||||
|
@ -1,102 +0,0 @@
|
|||||||
"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;
|
|
@ -1,174 +0,0 @@
|
|||||||
# 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;
|
|
@ -876,6 +876,11 @@ SELECT CHAR_LENGTH(TRIM(BOTH 0x0001 FROM _utf32 0x00000061));
|
|||||||
SELECT CHAR_LENGTH(TRIM(BOTH 0x61 FROM _utf32 0x00000061));
|
SELECT CHAR_LENGTH(TRIM(BOTH 0x61 FROM _utf32 0x00000061));
|
||||||
SELECT CHAR_LENGTH(TRIM(BOTH 0x00 FROM _utf32 0x00000061));
|
SELECT CHAR_LENGTH(TRIM(BOTH 0x00 FROM _utf32 0x00000061));
|
||||||
|
|
||||||
|
#
|
||||||
|
# potential signedness issue
|
||||||
|
#
|
||||||
|
select hex(lower(cast(0xffff0000 as char character set utf32))) as c;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 5.5 tests
|
--echo # End of 5.5 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -230,3 +230,16 @@ eval EXPLAIN $query;
|
|||||||
eval $query;
|
eval $query;
|
||||||
|
|
||||||
DROP TABLE t0,t1,t2;
|
DROP TABLE t0,t1,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-MariaDB daemon leaks memory with specific query
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (`voter_id` int(11) unsigned NOT NULL,
|
||||||
|
`language_id` int(11) unsigned NOT NULL DEFAULT '1'
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
CREATE TABLE t2 (`voter_id` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`serialized_c` mediumblob) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
insert into t2 values (1,repeat("a",1000)),(2,repeat("a",1000)),(3,repeat("b",1000)),(4,repeat("c",1000)),(4,repeat("b",1000));
|
||||||
|
SELECT GROUP_CONCAT(t1.language_id SEPARATOR ',') AS `translation_resources`, `d`.`serialized_c` FROM t2 AS `d` LEFT JOIN t1 ON `d`.`voter_id` = t1.`voter_id` GROUP BY `d`.`voter_id` ORDER BY 10-d.voter_id+RAND()*0;
|
||||||
|
drop table t1,t2;
|
||||||
|
@ -2880,6 +2880,19 @@ drop tables m1, t1, t4;
|
|||||||
drop view t3;
|
drop view t3;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-10424 - Assertion `ticket == __null' failed in
|
||||||
|
--echo # MDL_request::set_type
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (f1 INT) ENGINE=MyISAM;
|
||||||
|
CREATE TABLE tmerge (f1 INT) ENGINE=MERGE UNION=(t1);
|
||||||
|
PREPARE stmt FROM "ANALYZE TABLE tmerge, t1";
|
||||||
|
EXECUTE stmt;
|
||||||
|
EXECUTE stmt;
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
DROP TABLE t1, tmerge;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.5 tests
|
--echo End of 5.5 tests
|
||||||
|
|
||||||
--disable_result_log
|
--disable_result_log
|
||||||
|
@ -3653,5 +3653,32 @@ deallocate prepare stmt;
|
|||||||
SET SESSION sql_mode = @save_sql_mode;
|
SET SESSION sql_mode = @save_sql_mode;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-8833: Crash of server on prepared statement with
|
||||||
|
--echo # conversion to semi-join
|
||||||
|
--echo #
|
||||||
|
|
||||||
--echo # End of 10.0 tests
|
CREATE TABLE t1 (column1 INT);
|
||||||
|
INSERT INTO t1 VALUES (3),(9);
|
||||||
|
|
||||||
|
CREATE TABLE t2 (column2 INT);
|
||||||
|
INSERT INTO t2 VALUES (1),(4);
|
||||||
|
|
||||||
|
CREATE TABLE t3 (column3 INT);
|
||||||
|
INSERT INTO t3 VALUES (6),(8);
|
||||||
|
|
||||||
|
CREATE TABLE t4 (column4 INT);
|
||||||
|
INSERT INTO t4 VALUES (2),(5);
|
||||||
|
|
||||||
|
PREPARE stmt FROM "SELECT ( SELECT MAX( table1.column1 ) AS field1
|
||||||
|
FROM t1 AS table1
|
||||||
|
WHERE table3.column3 IN ( SELECT table2.column2 AS field2 FROM t2 AS table2 )
|
||||||
|
) AS sq
|
||||||
|
FROM t3 AS table3, t4 AS table4";
|
||||||
|
EXECUTE stmt;
|
||||||
|
EXECUTE stmt;
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop table t1,t2,t3,t4;
|
||||||
|
|
||||||
|
|
||||||
|
--echo # End of 5.5 tests
|
||||||
|
@ -15,3 +15,11 @@ select * from t1;
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
|
create table t1 (a bigint unsigned, b mediumint unsigned);
|
||||||
|
insert t1 values (1,2),(0xffffffffffffffff,0xffffff);
|
||||||
|
select coalesce(a,b), coalesce(b,a) from t1;
|
||||||
|
create table t2 as select a from t1 union select b from t1;
|
||||||
|
show create table t2;
|
||||||
|
select * from t2;
|
||||||
|
drop table t1, t2;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/* Copyright (c) 2000, 2010, Oracle and/or its affiliates
|
||||||
Copyright (c) 2000, 2010, Oracle and/or its affiliates
|
Copyright (c) 2009, 2016, 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
|
||||||
@ -49,7 +49,8 @@ int my_redel(const char *org_name, const char *tmp_name,
|
|||||||
DBUG_PRINT("my",("org_name: '%s' tmp_name: '%s' MyFlags: %d",
|
DBUG_PRINT("my",("org_name: '%s' tmp_name: '%s' MyFlags: %d",
|
||||||
org_name,tmp_name,MyFlags));
|
org_name,tmp_name,MyFlags));
|
||||||
|
|
||||||
if (my_copystat(org_name,tmp_name,MyFlags) < 0)
|
if (!my_disable_copystat_in_redel &&
|
||||||
|
my_copystat(org_name,tmp_name,MyFlags) < 0)
|
||||||
goto end;
|
goto end;
|
||||||
if (MyFlags & MY_REDEL_MAKE_BACKUP)
|
if (MyFlags & MY_REDEL_MAKE_BACKUP)
|
||||||
{
|
{
|
||||||
|
@ -99,6 +99,7 @@ my_bool my_disable_sync=0;
|
|||||||
my_bool my_disable_async_io=0;
|
my_bool my_disable_async_io=0;
|
||||||
my_bool my_disable_flush_key_blocks=0;
|
my_bool my_disable_flush_key_blocks=0;
|
||||||
my_bool my_disable_symlinks=0;
|
my_bool my_disable_symlinks=0;
|
||||||
|
my_bool my_disable_copystat_in_redel=0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Note that PSI_hook and PSI_server are unconditionally
|
Note that PSI_hook and PSI_server are unconditionally
|
||||||
|
@ -359,7 +359,7 @@ static enum_field_types field_types_merge_rules [FIELDTYPE_NUM][FIELDTYPE_NUM]=
|
|||||||
//MYSQL_TYPE_NULL MYSQL_TYPE_TIMESTAMP
|
//MYSQL_TYPE_NULL MYSQL_TYPE_TIMESTAMP
|
||||||
MYSQL_TYPE_LONGLONG, MYSQL_TYPE_VARCHAR,
|
MYSQL_TYPE_LONGLONG, MYSQL_TYPE_VARCHAR,
|
||||||
//MYSQL_TYPE_LONGLONG MYSQL_TYPE_INT24
|
//MYSQL_TYPE_LONGLONG MYSQL_TYPE_INT24
|
||||||
MYSQL_TYPE_LONGLONG, MYSQL_TYPE_LONG,
|
MYSQL_TYPE_LONGLONG, MYSQL_TYPE_LONGLONG,
|
||||||
//MYSQL_TYPE_DATE MYSQL_TYPE_TIME
|
//MYSQL_TYPE_DATE MYSQL_TYPE_TIME
|
||||||
MYSQL_TYPE_VARCHAR, MYSQL_TYPE_VARCHAR,
|
MYSQL_TYPE_VARCHAR, MYSQL_TYPE_VARCHAR,
|
||||||
//MYSQL_TYPE_DATETIME MYSQL_TYPE_YEAR
|
//MYSQL_TYPE_DATETIME MYSQL_TYPE_YEAR
|
||||||
|
28
sql/item.cc
28
sql/item.cc
@ -2778,9 +2778,28 @@ void Item_field::fix_after_pullout(st_select_lex *new_parent, Item **ref)
|
|||||||
if (context)
|
if (context)
|
||||||
{
|
{
|
||||||
Name_resolution_context *ctx= new Name_resolution_context();
|
Name_resolution_context *ctx= new Name_resolution_context();
|
||||||
ctx->outer_context= NULL; // We don't build a complete name resolver
|
if (context->select_lex == new_parent)
|
||||||
ctx->table_list= NULL; // We rely on first_name_resolution_table instead
|
{
|
||||||
|
/*
|
||||||
|
This field was pushed in then pulled out
|
||||||
|
(for example left part of IN)
|
||||||
|
*/
|
||||||
|
ctx->outer_context= context->outer_context;
|
||||||
|
}
|
||||||
|
else if (context->outer_context)
|
||||||
|
{
|
||||||
|
/* just pull to the upper context */
|
||||||
|
ctx->outer_context= context->outer_context->outer_context;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* No upper context (merging Derived/VIEW where context chain ends) */
|
||||||
|
ctx->outer_context= NULL;
|
||||||
|
}
|
||||||
|
ctx->table_list= context->first_name_resolution_table;
|
||||||
ctx->select_lex= new_parent;
|
ctx->select_lex= new_parent;
|
||||||
|
if (context->select_lex == NULL)
|
||||||
|
ctx->select_lex= NULL;
|
||||||
ctx->first_name_resolution_table= context->first_name_resolution_table;
|
ctx->first_name_resolution_table= context->first_name_resolution_table;
|
||||||
ctx->last_name_resolution_table= context->last_name_resolution_table;
|
ctx->last_name_resolution_table= context->last_name_resolution_table;
|
||||||
ctx->error_processor= context->error_processor;
|
ctx->error_processor= context->error_processor;
|
||||||
@ -5883,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,
|
field= new Field_double((uchar*) 0, max_length, null_ptr, 0, Field::NONE,
|
||||||
name, decimals, 0, unsigned_flag);
|
name, decimals, 0, unsigned_flag);
|
||||||
break;
|
break;
|
||||||
case MYSQL_TYPE_NULL:
|
|
||||||
field= new Field_null((uchar*) 0, max_length, Field::NONE,
|
|
||||||
name, &my_charset_bin);
|
|
||||||
break;
|
|
||||||
case MYSQL_TYPE_INT24:
|
case MYSQL_TYPE_INT24:
|
||||||
field= new Field_medium((uchar*) 0, max_length, null_ptr, 0, Field::NONE,
|
field= new Field_medium((uchar*) 0, max_length, null_ptr, 0, Field::NONE,
|
||||||
name, 0, unsigned_flag);
|
name, 0, unsigned_flag);
|
||||||
@ -5920,6 +5935,7 @@ Field *Item::tmp_table_field_from_field_type(TABLE *table, bool fixed_length)
|
|||||||
DBUG_ASSERT(0);
|
DBUG_ASSERT(0);
|
||||||
/* If something goes awfully wrong, it's better to get a string than die */
|
/* If something goes awfully wrong, it's better to get a string than die */
|
||||||
case MYSQL_TYPE_STRING:
|
case MYSQL_TYPE_STRING:
|
||||||
|
case MYSQL_TYPE_NULL:
|
||||||
if (fixed_length && !too_big_for_varchar())
|
if (fixed_length && !too_big_for_varchar())
|
||||||
{
|
{
|
||||||
field= new Field_string(max_length, maybe_null, name,
|
field= new Field_string(max_length, maybe_null, name,
|
||||||
|
@ -3620,6 +3620,7 @@ static int init_common_variables()
|
|||||||
|
|
||||||
max_system_variables.pseudo_thread_id= (ulong)~0;
|
max_system_variables.pseudo_thread_id= (ulong)~0;
|
||||||
server_start_time= flush_status_time= my_time(0);
|
server_start_time= flush_status_time= my_time(0);
|
||||||
|
my_disable_copystat_in_redel= 1;
|
||||||
|
|
||||||
rpl_filter= new Rpl_filter;
|
rpl_filter= new Rpl_filter;
|
||||||
binlog_filter= new Rpl_filter;
|
binlog_filter= new Rpl_filter;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
/* Copyright (c) 2000, 2016, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2012, Monty Program Ab
|
Copyright (c) 2012, 2016, 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
|
||||||
@ -885,7 +885,7 @@ my_real_read(NET *net, size_t *complen)
|
|||||||
my_progname,vio_errno(net->vio));
|
my_progname,vio_errno(net->vio));
|
||||||
}
|
}
|
||||||
#ifndef MYSQL_SERVER
|
#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..."));
|
DBUG_PRINT("warning",("Interrupted read. Retrying..."));
|
||||||
continue;
|
continue;
|
||||||
|
@ -441,7 +441,19 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
|||||||
}
|
}
|
||||||
thd->prepare_derived_at_open= FALSE;
|
thd->prepare_derived_at_open= FALSE;
|
||||||
|
|
||||||
table->next_global= save_next_global;
|
/*
|
||||||
|
MERGE engine may adjust table->next_global chain, thus we have to
|
||||||
|
append save_next_global after merge children.
|
||||||
|
*/
|
||||||
|
if (save_next_global)
|
||||||
|
{
|
||||||
|
TABLE_LIST *table_list_iterator= table;
|
||||||
|
while (table_list_iterator->next_global)
|
||||||
|
table_list_iterator= table_list_iterator->next_global;
|
||||||
|
table_list_iterator->next_global= save_next_global;
|
||||||
|
save_next_global->prev_global= &table_list_iterator->next_global;
|
||||||
|
}
|
||||||
|
|
||||||
table->next_local= save_next_local;
|
table->next_local= save_next_local;
|
||||||
thd->open_options&= ~extra_open_options;
|
thd->open_options&= ~extra_open_options;
|
||||||
|
|
||||||
|
@ -4995,9 +4995,11 @@ int THD::decide_logging_format(TABLE_LIST *tables)
|
|||||||
{
|
{
|
||||||
static const char *prelocked_mode_name[] = {
|
static const char *prelocked_mode_name[] = {
|
||||||
"NON_PRELOCKED",
|
"NON_PRELOCKED",
|
||||||
|
"LOCK_TABLES",
|
||||||
"PRELOCKED",
|
"PRELOCKED",
|
||||||
"PRELOCKED_UNDER_LOCK_TABLES",
|
"PRELOCKED_UNDER_LOCK_TABLES",
|
||||||
};
|
};
|
||||||
|
compile_time_assert(array_elements(prelocked_mode_name) == LTM_always_last);
|
||||||
DBUG_PRINT("debug", ("prelocked_mode: %s",
|
DBUG_PRINT("debug", ("prelocked_mode: %s",
|
||||||
prelocked_mode_name[locked_tables_mode]));
|
prelocked_mode_name[locked_tables_mode]));
|
||||||
}
|
}
|
||||||
|
@ -1095,7 +1095,8 @@ enum enum_locked_tables_mode
|
|||||||
LTM_NONE= 0,
|
LTM_NONE= 0,
|
||||||
LTM_LOCK_TABLES,
|
LTM_LOCK_TABLES,
|
||||||
LTM_PRELOCKED,
|
LTM_PRELOCKED,
|
||||||
LTM_PRELOCKED_UNDER_LOCK_TABLES
|
LTM_PRELOCKED_UNDER_LOCK_TABLES,
|
||||||
|
LTM_always_last
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -3671,6 +3672,11 @@ public:
|
|||||||
save_copy_field_end= copy_field_end= NULL;
|
save_copy_field_end= copy_field_end= NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void free_copy_field_data()
|
||||||
|
{
|
||||||
|
for (Copy_field *ptr= copy_field ; ptr != copy_field_end ; ptr++)
|
||||||
|
ptr->tmp.free();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class select_union :public select_result_interceptor
|
class select_union :public select_result_interceptor
|
||||||
|
@ -8275,9 +8275,26 @@ JOIN::make_simple_join(JOIN *parent, TABLE *temp_table)
|
|||||||
We need to destruct the copy_field (allocated in create_tmp_table())
|
We need to destruct the copy_field (allocated in create_tmp_table())
|
||||||
before setting it to 0 if the join is not "reusable".
|
before setting it to 0 if the join is not "reusable".
|
||||||
*/
|
*/
|
||||||
if (!tmp_join || tmp_join != this)
|
if (!tmp_join || tmp_join != this)
|
||||||
tmp_table_param.cleanup();
|
tmp_table_param.cleanup();
|
||||||
tmp_table_param.copy_field= tmp_table_param.copy_field_end=0;
|
else
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Free data buffered in copy_fields, but keep data pointed by copy_field
|
||||||
|
around for next iteration (possibly stored in save_copy_fields).
|
||||||
|
|
||||||
|
It would be logically simpler to not clear copy_field
|
||||||
|
below, but as we have loops that runs over copy_field to
|
||||||
|
copy_field_end that should not be done anymore, it's simpler to
|
||||||
|
just clear the pointers.
|
||||||
|
|
||||||
|
Another option would be to just clear copy_field_end and not run
|
||||||
|
the loops if this is not set or to have tmp_table_param.cleanup()
|
||||||
|
to run cleanup on save_copy_field if copy_field is not set.
|
||||||
|
*/
|
||||||
|
tmp_table_param.free_copy_field_data();
|
||||||
|
tmp_table_param.copy_field= tmp_table_param.copy_field_end=0;
|
||||||
|
}
|
||||||
first_record= sort_and_group=0;
|
first_record= sort_and_group=0;
|
||||||
send_records= (ha_rows) 0;
|
send_records= (ha_rows) 0;
|
||||||
|
|
||||||
@ -10866,7 +10883,7 @@ void JOIN::join_free()
|
|||||||
/**
|
/**
|
||||||
Free resources of given join.
|
Free resources of given join.
|
||||||
|
|
||||||
@param fill true if we should free all resources, call with full==1
|
@param full true if we should free all resources, call with full==1
|
||||||
should be last, before it this function can be called with
|
should be last, before it this function can be called with
|
||||||
full==0
|
full==0
|
||||||
|
|
||||||
@ -10982,7 +10999,7 @@ void JOIN::cleanup(bool full)
|
|||||||
/*
|
/*
|
||||||
If we have tmp_join and 'this' JOIN is not tmp_join and
|
If we have tmp_join and 'this' JOIN is not tmp_join and
|
||||||
tmp_table_param.copy_field's of them are equal then we have to remove
|
tmp_table_param.copy_field's of them are equal then we have to remove
|
||||||
pointer to tmp_table_param.copy_field from tmp_join, because it qill
|
pointer to tmp_table_param.copy_field from tmp_join, because it will
|
||||||
be removed in tmp_table_param.cleanup().
|
be removed in tmp_table_param.cleanup().
|
||||||
*/
|
*/
|
||||||
if (tmp_join &&
|
if (tmp_join &&
|
||||||
@ -14816,6 +14833,7 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
|
|||||||
case Item::VARBIN_ITEM:
|
case Item::VARBIN_ITEM:
|
||||||
case Item::CACHE_ITEM:
|
case Item::CACHE_ITEM:
|
||||||
case Item::EXPR_CACHE_ITEM:
|
case Item::EXPR_CACHE_ITEM:
|
||||||
|
case Item::PARAM_ITEM:
|
||||||
if (make_copy_field)
|
if (make_copy_field)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(((Item_result_field*)item)->result_field);
|
DBUG_ASSERT(((Item_result_field*)item)->result_field);
|
||||||
@ -21397,7 +21415,7 @@ setup_copy_fields(THD *thd, TMP_TABLE_PARAM *param,
|
|||||||
err:
|
err:
|
||||||
if (copy)
|
if (copy)
|
||||||
delete [] param->copy_field; // This is never 0
|
delete [] param->copy_field; // This is never 0
|
||||||
param->copy_field=0;
|
param->copy_field= 0;
|
||||||
err2:
|
err2:
|
||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Copyright (c) 2003, 2013, Oracle and/or its affiliates
|
/* Copyright (c) 2003, 2013, Oracle and/or its affiliates
|
||||||
Copyright (c) 2009, 2014, SkySQL Ab.
|
Copyright (c) 2009, 2016, MariaDB
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
This library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Library General Public
|
modify it under the terms of the GNU Library General Public
|
||||||
@ -1098,7 +1098,7 @@ my_uni_utf16(CHARSET_INFO *cs __attribute__((unused)),
|
|||||||
static inline void
|
static inline void
|
||||||
my_tolower_utf16(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
my_tolower_utf16(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
||||||
{
|
{
|
||||||
int page= *wc >> 8;
|
uint page= *wc >> 8;
|
||||||
if (page < 256 && uni_plane[page])
|
if (page < 256 && uni_plane[page])
|
||||||
*wc= uni_plane[page][*wc & 0xFF].tolower;
|
*wc= uni_plane[page][*wc & 0xFF].tolower;
|
||||||
}
|
}
|
||||||
@ -1107,7 +1107,7 @@ my_tolower_utf16(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
|||||||
static inline void
|
static inline void
|
||||||
my_toupper_utf16(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
my_toupper_utf16(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
||||||
{
|
{
|
||||||
int page= *wc >> 8;
|
uint page= *wc >> 8;
|
||||||
if (page < 256 && uni_plane[page])
|
if (page < 256 && uni_plane[page])
|
||||||
*wc= uni_plane[page][*wc & 0xFF].toupper;
|
*wc= uni_plane[page][*wc & 0xFF].toupper;
|
||||||
}
|
}
|
||||||
@ -1116,7 +1116,7 @@ my_toupper_utf16(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
|||||||
static inline void
|
static inline void
|
||||||
my_tosort_utf16(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
my_tosort_utf16(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
||||||
{
|
{
|
||||||
int page= *wc >> 8;
|
uint page= *wc >> 8;
|
||||||
if (page < 256)
|
if (page < 256)
|
||||||
{
|
{
|
||||||
if (uni_plane[page])
|
if (uni_plane[page])
|
||||||
@ -1727,7 +1727,7 @@ my_uni_utf32(CHARSET_INFO *cs __attribute__((unused)),
|
|||||||
static inline void
|
static inline void
|
||||||
my_tolower_utf32(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
my_tolower_utf32(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
||||||
{
|
{
|
||||||
int page= *wc >> 8;
|
uint page= *wc >> 8;
|
||||||
if (page < 256 && uni_plane[page])
|
if (page < 256 && uni_plane[page])
|
||||||
*wc= uni_plane[page][*wc & 0xFF].tolower;
|
*wc= uni_plane[page][*wc & 0xFF].tolower;
|
||||||
}
|
}
|
||||||
@ -1736,7 +1736,7 @@ my_tolower_utf32(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
|||||||
static inline void
|
static inline void
|
||||||
my_toupper_utf32(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
my_toupper_utf32(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
||||||
{
|
{
|
||||||
int page= *wc >> 8;
|
uint page= *wc >> 8;
|
||||||
if (page < 256 && uni_plane[page])
|
if (page < 256 && uni_plane[page])
|
||||||
*wc= uni_plane[page][*wc & 0xFF].toupper;
|
*wc= uni_plane[page][*wc & 0xFF].toupper;
|
||||||
}
|
}
|
||||||
@ -1745,7 +1745,7 @@ my_toupper_utf32(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
|||||||
static inline void
|
static inline void
|
||||||
my_tosort_utf32(MY_UNICASE_INFO *const* uni_plane, my_wc_t *wc)
|
my_tosort_utf32(MY_UNICASE_INFO *const* uni_plane, my_wc_t *wc)
|
||||||
{
|
{
|
||||||
int page= *wc >> 8;
|
uint page= *wc >> 8;
|
||||||
if (page < 256)
|
if (page < 256)
|
||||||
{
|
{
|
||||||
if (uni_plane[page])
|
if (uni_plane[page])
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2009, 2013, Monty Program Ab
|
Copyright (c) 2009, 2016, MariaDB
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
This library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Library General Public
|
modify it under the terms of the GNU Library General Public
|
||||||
@ -1939,7 +1939,7 @@ MY_UNICASE_INFO *const my_unicase_turkish[256]=
|
|||||||
static inline void
|
static inline void
|
||||||
my_tosort_unicode(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
my_tosort_unicode(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
||||||
{
|
{
|
||||||
int page= *wc >> 8;
|
uint page= *wc >> 8;
|
||||||
if (page < 256)
|
if (page < 256)
|
||||||
{
|
{
|
||||||
if (uni_plane[page])
|
if (uni_plane[page])
|
||||||
@ -5024,7 +5024,7 @@ my_wc_mb_utf8mb4_no_range(CHARSET_INFO *cs __attribute__((unused)),
|
|||||||
static inline void
|
static inline void
|
||||||
my_tolower_utf8mb4(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
my_tolower_utf8mb4(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
||||||
{
|
{
|
||||||
int page= *wc >> 8;
|
uint page= *wc >> 8;
|
||||||
if (page < 256 && uni_plane[page])
|
if (page < 256 && uni_plane[page])
|
||||||
*wc= uni_plane[page][*wc & 0xFF].tolower;
|
*wc= uni_plane[page][*wc & 0xFF].tolower;
|
||||||
}
|
}
|
||||||
@ -5033,7 +5033,7 @@ my_tolower_utf8mb4(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
|||||||
static inline void
|
static inline void
|
||||||
my_toupper_utf8mb4(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
my_toupper_utf8mb4(MY_UNICASE_INFO * const* uni_plane, my_wc_t *wc)
|
||||||
{
|
{
|
||||||
int page= *wc >> 8;
|
uint page= *wc >> 8;
|
||||||
if (page < 256 && uni_plane[page])
|
if (page < 256 && uni_plane[page])
|
||||||
*wc= uni_plane[page][*wc & 0xFF].toupper;
|
*wc= uni_plane[page][*wc & 0xFF].toupper;
|
||||||
}
|
}
|
||||||
|
@ -326,7 +326,7 @@ case "$mode" in
|
|||||||
then
|
then
|
||||||
# Give extra arguments to mysqld with the my.cnf file. This script
|
# Give extra arguments to mysqld with the my.cnf file. This script
|
||||||
# may be overwritten at next upgrade.
|
# 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=$?
|
wait_for_ready; return_value=$?
|
||||||
|
|
||||||
# Make lock for RedHat / SuSE
|
# Make lock for RedHat / SuSE
|
||||||
|
@ -24,10 +24,13 @@ ENDIF()
|
|||||||
|
|
||||||
|
|
||||||
SET(MANUFACTURER "MariaDB Corporation Ab")
|
SET(MANUFACTURER "MariaDB Corporation Ab")
|
||||||
FIND_PATH(WIX_DIR heat.exe
|
SET(WIX_BIN_PATHS)
|
||||||
"$ENV{ProgramFiles}/WiX Toolset v3.9/bin"
|
FOREACH(WIX_VER 3.9 3.10 3.11)
|
||||||
"$ENV{ProgramFiles}/WiX Toolset v3.10/bin"
|
LIST(APPEND WIX_BIN_PATHS "$ENV{ProgramFiles}/WiX Toolset v${WIX_VER}/bin")
|
||||||
)
|
LIST(APPEND WIX_BIN_PATHS "$ENV{ProgramFiles} (x86)/WiX Toolset v${WIX_VER}/bin")
|
||||||
|
ENDFOREACH()
|
||||||
|
|
||||||
|
FIND_PATH(WIX_DIR heat.exe ${WIX_BIN_PATHS})
|
||||||
SET(CPACK_WIX_PACKAGE_BASE_NAME "MariaDB")
|
SET(CPACK_WIX_PACKAGE_BASE_NAME "MariaDB")
|
||||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||||
SET(CPACK_WIX_UPGRADE_CODE "49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3")
|
SET(CPACK_WIX_UPGRADE_CODE "49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3")
|
||||||
|
@ -430,6 +430,7 @@ EXECUTE_PROCESS(
|
|||||||
IF(SIGNCODE)
|
IF(SIGNCODE)
|
||||||
EXECUTE_PROCESS(
|
EXECUTE_PROCESS(
|
||||||
COMMAND ${SIGNTOOL_EXECUTABLE} sign ${SIGNTOOL_PARAMETERS}
|
COMMAND ${SIGNTOOL_EXECUTABLE} sign ${SIGNTOOL_PARAMETERS}
|
||||||
|
/d ${CPACK_PACKAGE_FILE_NAME}.msi
|
||||||
${CPACK_PACKAGE_FILE_NAME}.msi
|
${CPACK_PACKAGE_FILE_NAME}.msi
|
||||||
)
|
)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user