Merge 10.2 into 10.3
This commit is contained in:
commit
158247d3bd
@ -1,4 +1,3 @@
|
|||||||
drop table if exists t1;
|
|
||||||
create table t1 (a int check (a>0));
|
create table t1 (a int check (a>0));
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -111,6 +110,25 @@ long_enough_name CREATE TABLE `long_enough_name` (
|
|||||||
CONSTRAINT `constr` CHECK (`f6` >= 0)
|
CONSTRAINT `constr` CHECK (`f6` >= 0)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE long_enough_name;
|
DROP TABLE long_enough_name;
|
||||||
|
CREATE TABLE test.t(t int COMMENT 't_comment' CHECK(t>0));
|
||||||
|
SHOW CREATE TABLE test.t;
|
||||||
|
Table Create Table
|
||||||
|
t CREATE TABLE `t` (
|
||||||
|
`t` int(11) DEFAULT NULL COMMENT 't_comment' CHECK (`t` > 0)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP table test.t;
|
||||||
|
SET @OLD_SQL_MODE=@@SQL_MODE;
|
||||||
|
SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS';
|
||||||
|
CREATE TABLE test.t (f int foo=bar check(f>0));
|
||||||
|
Warnings:
|
||||||
|
Warning 1911 Unknown option 'foo'
|
||||||
|
SHOW CREATE TABLE t;
|
||||||
|
Table Create Table
|
||||||
|
t CREATE TABLE `t` (
|
||||||
|
`f` int(11) DEFAULT NULL `foo`=bar CHECK (`f` > 0)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP table test.t;
|
||||||
|
SET @@SQL_MODE=@OLD_SQL_MODE;
|
||||||
create table t1 (a int check (a>10)) select 100 as 'a';
|
create table t1 (a int check (a>10)) select 100 as 'a';
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
#
|
#
|
||||||
# Testing of constraints
|
# Testing of constraints
|
||||||
#
|
#
|
||||||
--disable_warnings
|
|
||||||
drop table if exists t1;
|
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
create table t1 (a int check (a>0));
|
create table t1 (a int check (a>0));
|
||||||
show create table t1;
|
show create table t1;
|
||||||
insert into t1 values (1);
|
insert into t1 values (1);
|
||||||
@ -104,7 +100,24 @@ SHOW CREATE TABLE long_enough_name;
|
|||||||
DROP TABLE long_enough_name;
|
DROP TABLE long_enough_name;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check that we don't loose constraints as part of CREATE ... SELECT
|
# MDEV-17654 Incorrect syntax returned for column with CHECK constraint
|
||||||
|
# in the "SHOW CREATE TABLE ..." result
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE test.t(t int COMMENT 't_comment' CHECK(t>0));
|
||||||
|
SHOW CREATE TABLE test.t;
|
||||||
|
DROP table test.t;
|
||||||
|
|
||||||
|
SET @OLD_SQL_MODE=@@SQL_MODE;
|
||||||
|
SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS';
|
||||||
|
|
||||||
|
CREATE TABLE test.t (f int foo=bar check(f>0));
|
||||||
|
SHOW CREATE TABLE t;
|
||||||
|
DROP table test.t;
|
||||||
|
SET @@SQL_MODE=@OLD_SQL_MODE;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check that we don't lose constraints as part of CREATE ... SELECT
|
||||||
#
|
#
|
||||||
|
|
||||||
create table t1 (a int check (a>10)) select 100 as 'a';
|
create table t1 (a int check (a>10)) select 100 as 'a';
|
||||||
|
@ -1962,7 +1962,7 @@ ERROR HY000: Can't update table 't2' in stored function/trigger because it is al
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TRIGGER t_insert;
|
DROP TRIGGER t_insert;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
End of 5.0 tests
|
# End of 5.0 tests
|
||||||
drop table if exists table_25411_a;
|
drop table if exists table_25411_a;
|
||||||
drop table if exists table_25411_b;
|
drop table if exists table_25411_b;
|
||||||
create table table_25411_a(a int);
|
create table table_25411_a(a int);
|
||||||
@ -2131,7 +2131,7 @@ b
|
|||||||
# Work around Bug#45235
|
# Work around Bug#45235
|
||||||
DROP DATABASE db1;
|
DROP DATABASE db1;
|
||||||
USE test;
|
USE test;
|
||||||
End of 5.1 tests.
|
# End of 5.1 tests.
|
||||||
create table t1 (i int);
|
create table t1 (i int);
|
||||||
create table t2 (i int);
|
create table t2 (i int);
|
||||||
flush tables;
|
flush tables;
|
||||||
@ -2150,7 +2150,7 @@ select * from t2;
|
|||||||
i
|
i
|
||||||
2
|
2
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
End of 5.2 tests.
|
# End of 5.2 tests.
|
||||||
#
|
#
|
||||||
# Bug#34453 Can't change size of file (Errcode: 1224)
|
# Bug#34453 Can't change size of file (Errcode: 1224)
|
||||||
#
|
#
|
||||||
@ -2253,7 +2253,7 @@ c
|
|||||||
aaa
|
aaa
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
End of 5.5 tests.
|
# End of 5.5 tests.
|
||||||
#
|
#
|
||||||
# BUG #910083: materialized subquery in a trigger
|
# BUG #910083: materialized subquery in a trigger
|
||||||
#
|
#
|
||||||
@ -2300,7 +2300,7 @@ b
|
|||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
DROP TRIGGER tr;
|
DROP TRIGGER tr;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
End of 5.3 tests.
|
# End of 5.3 tests.
|
||||||
set time_zone="+00:00";
|
set time_zone="+00:00";
|
||||||
SET TIMESTAMP=UNIX_TIMESTAMP('2001-01-01 10:20:30');
|
SET TIMESTAMP=UNIX_TIMESTAMP('2001-01-01 10:20:30');
|
||||||
SET @@session.sql_mode = 'STRICT_ALL_TABLES,STRICT_TRANS_TABLES';
|
SET @@session.sql_mode = 'STRICT_ALL_TABLES,STRICT_TRANS_TABLES';
|
||||||
@ -2407,7 +2407,24 @@ AFTER UPDATE ON t1 FOR EACH ROW SELECT (SELECT b FROM t2) INTO @x;
|
|||||||
# Running 20000 queries
|
# Running 20000 queries
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
#
|
#
|
||||||
# Start of 10.3 tests
|
# MDEV-19188 Server Crash When Using a Trigger With A Number of Virtual Columns on INSERT/UPDATE
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
virt1 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt2 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt3 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt4 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt5 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt6 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt7 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt8 INT GENERATED ALWAYS AS (0) VIRTUAL
|
||||||
|
);
|
||||||
|
INSERT INTO t1 () VALUES ();
|
||||||
|
CREATE TRIGGER t1_trigger BEFORE INSERT ON t1 FOR EACH ROW BEGIN END;
|
||||||
|
INSERT INTO t1 () VALUES ();
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# MDEV-12461 TYPE OF and ROW TYPE OF anchored data types
|
# MDEV-12461 TYPE OF and ROW TYPE OF anchored data types
|
||||||
@ -2426,3 +2443,6 @@ SELECT * FROM t1;
|
|||||||
a b total
|
a b total
|
||||||
10 20 30
|
10 20 30
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# End of 10.3 tests
|
||||||
|
#
|
||||||
|
@ -2184,7 +2184,7 @@ DROP TABLE t1;
|
|||||||
DROP TRIGGER t_insert;
|
DROP TRIGGER t_insert;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo # End of 5.0 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug#25411 (trigger code truncated)
|
# Bug#25411 (trigger code truncated)
|
||||||
@ -2406,7 +2406,7 @@ let $MYSQLD_DATADIR = `select @@datadir`;
|
|||||||
DROP DATABASE db1;
|
DROP DATABASE db1;
|
||||||
USE test;
|
USE test;
|
||||||
|
|
||||||
--echo End of 5.1 tests.
|
--echo # End of 5.1 tests.
|
||||||
|
|
||||||
#
|
#
|
||||||
# Test that using a trigger will not open mysql.proc
|
# Test that using a trigger will not open mysql.proc
|
||||||
@ -2430,7 +2430,7 @@ select * from t1;
|
|||||||
select * from t2;
|
select * from t2;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
--echo End of 5.2 tests.
|
--echo # End of 5.2 tests.
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Bug#34453 Can't change size of file (Errcode: 1224)
|
--echo # Bug#34453 Can't change size of file (Errcode: 1224)
|
||||||
@ -2574,7 +2574,7 @@ SELECT c FROM t1;
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo
|
--echo
|
||||||
--echo End of 5.5 tests.
|
--echo # End of 5.5 tests.
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # BUG #910083: materialized subquery in a trigger
|
--echo # BUG #910083: materialized subquery in a trigger
|
||||||
@ -2613,7 +2613,7 @@ SET optimizer_switch=@save_optimizer_switch;
|
|||||||
DROP TRIGGER tr;
|
DROP TRIGGER tr;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
--echo End of 5.3 tests.
|
--echo # End of 5.3 tests.
|
||||||
|
|
||||||
#
|
#
|
||||||
# MDEV-4829 BEFORE INSERT triggers dont issue 1406 error
|
# MDEV-4829 BEFORE INSERT triggers dont issue 1406 error
|
||||||
@ -2737,9 +2737,27 @@ while ($n)
|
|||||||
|
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-19188 Server Crash When Using a Trigger With A Number of Virtual Columns on INSERT/UPDATE
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
virt1 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt2 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt3 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt4 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt5 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt6 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt7 INT GENERATED ALWAYS AS (0) VIRTUAL,
|
||||||
|
virt8 INT GENERATED ALWAYS AS (0) VIRTUAL
|
||||||
|
);
|
||||||
|
INSERT INTO t1 () VALUES ();
|
||||||
|
CREATE TRIGGER t1_trigger BEFORE INSERT ON t1 FOR EACH ROW BEGIN END;
|
||||||
|
INSERT INTO t1 () VALUES ();
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Start of 10.3 tests
|
--echo # End of 10.2 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
@ -2760,3 +2778,7 @@ DELIMITER ;$$
|
|||||||
INSERT INTO t1 (a,b) VALUES (10, 20);
|
INSERT INTO t1 (a,b) VALUES (10, 20);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.3 tests
|
||||||
|
--echo #
|
||||||
|
@ -30,6 +30,10 @@
|
|||||||
#define SIGNAL_FMT "signal %d"
|
#define SIGNAL_FMT "signal %d"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef PATH_MAX
|
||||||
|
#define PATH_MAX 4096
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
We are handling signals/exceptions in this file.
|
We are handling signals/exceptions in this file.
|
||||||
Any global variables we read should be 'volatile sig_atomic_t'
|
Any global variables we read should be 'volatile sig_atomic_t'
|
||||||
@ -44,6 +48,43 @@ extern volatile sig_atomic_t ld_assume_kernel_is_set;
|
|||||||
|
|
||||||
extern const char *optimizer_switch_names[];
|
extern const char *optimizer_switch_names[];
|
||||||
|
|
||||||
|
static inline void output_core_info()
|
||||||
|
{
|
||||||
|
/* proc is optional on some BSDs so it can't hurt to look */
|
||||||
|
#ifdef HAVE_READLINK
|
||||||
|
char buff[PATH_MAX];
|
||||||
|
ssize_t len;
|
||||||
|
int fd;
|
||||||
|
if ((len= readlink("/proc/self/cwd", buff, sizeof(buff))) >= 0)
|
||||||
|
{
|
||||||
|
my_safe_printf_stderr("Writing a core file...\nWorking directory at %.*s\n",
|
||||||
|
(int) len, buff);
|
||||||
|
}
|
||||||
|
if ((fd= my_open("/proc/self/limits", O_RDONLY, MYF(0))) >= 0)
|
||||||
|
{
|
||||||
|
my_safe_printf_stderr("Resource Limits:\n");
|
||||||
|
while ((len= my_read(fd, (uchar*)buff, sizeof(buff), MYF(0))) > 0)
|
||||||
|
{
|
||||||
|
my_write_stderr(buff, len);
|
||||||
|
}
|
||||||
|
my_close(fd, MYF(0));
|
||||||
|
}
|
||||||
|
#ifdef __linux__
|
||||||
|
if ((fd= my_open("/proc/sys/kernel/core_pattern", O_RDONLY, MYF(0))) >= 0)
|
||||||
|
{
|
||||||
|
len= my_read(fd, (uchar*)buff, sizeof(buff), MYF(0));
|
||||||
|
my_safe_printf_stderr("Core pattern: %.*s\n", (int) len, buff);
|
||||||
|
my_close(fd, MYF(0));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
char buff[80];
|
||||||
|
my_getwd(buff, sizeof(buff), 0);
|
||||||
|
my_safe_printf_stderr("Writing a core file at %s\n", buff);
|
||||||
|
fflush(stderr);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handler for fatal signals on POSIX, exception handler on Windows.
|
* Handler for fatal signals on POSIX, exception handler on Windows.
|
||||||
*
|
*
|
||||||
@ -295,13 +336,10 @@ extern "C" sig_handler handle_fatal_signal(int sig)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
output_core_info();
|
||||||
#ifdef HAVE_WRITE_CORE
|
#ifdef HAVE_WRITE_CORE
|
||||||
if (test_flags & TEST_CORE_ON_SIGNAL)
|
if (test_flags & TEST_CORE_ON_SIGNAL)
|
||||||
{
|
{
|
||||||
char buff[80];
|
|
||||||
my_getwd(buff, sizeof(buff), 0);
|
|
||||||
my_safe_printf_stderr("Writing a core file at %s\n", buff);
|
|
||||||
fflush(stderr);
|
|
||||||
my_write_core(sig);
|
my_write_core(sig);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -45,7 +45,7 @@ void Filesort_tracker::print_json_members(Json_writer *writer)
|
|||||||
else if (r_limit == 0)
|
else if (r_limit == 0)
|
||||||
writer->add_str(varied_str);
|
writer->add_str(varied_str);
|
||||||
else
|
else
|
||||||
writer->add_ll((longlong) rint(r_limit));
|
writer->add_ll(r_limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
writer->add_member("r_used_priority_queue");
|
writer->add_member("r_used_priority_queue");
|
||||||
@ -61,13 +61,13 @@ void Filesort_tracker::print_json_members(Json_writer *writer)
|
|||||||
if (!get_r_loops())
|
if (!get_r_loops())
|
||||||
writer->add_member("r_output_rows").add_null();
|
writer->add_member("r_output_rows").add_null();
|
||||||
else
|
else
|
||||||
writer->add_member("r_output_rows").add_ll((longlong) rint(r_output_rows /
|
writer->add_member("r_output_rows").add_ll(
|
||||||
get_r_loops()));
|
(longlong) rint((double)r_output_rows / get_r_loops()));
|
||||||
|
|
||||||
if (sort_passes)
|
if (sort_passes)
|
||||||
{
|
{
|
||||||
writer->add_member("r_sort_passes").add_ll((longlong) rint(sort_passes /
|
writer->add_member("r_sort_passes").add_ll(
|
||||||
get_r_loops()));
|
(longlong) rint((double)sort_passes / get_r_loops()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sort_buffer_size != 0)
|
if (sort_buffer_size != 0)
|
||||||
|
@ -2305,6 +2305,16 @@ int show_create_table(THD *thd, TABLE_LIST *table_list, String *packet,
|
|||||||
!(sql_mode & MODE_NO_FIELD_OPTIONS))
|
!(sql_mode & MODE_NO_FIELD_OPTIONS))
|
||||||
packet->append(STRING_WITH_LEN(" AUTO_INCREMENT"));
|
packet->append(STRING_WITH_LEN(" AUTO_INCREMENT"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (field->comment.length)
|
||||||
|
{
|
||||||
|
packet->append(STRING_WITH_LEN(" COMMENT "));
|
||||||
|
append_unescaped(packet, field->comment.str, field->comment.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
append_create_options(thd, packet, field->option_list, check_options,
|
||||||
|
hton->field_options);
|
||||||
|
|
||||||
if (field->check_constraint)
|
if (field->check_constraint)
|
||||||
{
|
{
|
||||||
StringBuffer<MAX_FIELD_WIDTH> str(&my_charset_utf8mb4_general_ci);
|
StringBuffer<MAX_FIELD_WIDTH> str(&my_charset_utf8mb4_general_ci);
|
||||||
@ -2314,13 +2324,6 @@ int show_create_table(THD *thd, TABLE_LIST *table_list, String *packet,
|
|||||||
packet->append(STRING_WITH_LEN(")"));
|
packet->append(STRING_WITH_LEN(")"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (field->comment.length)
|
|
||||||
{
|
|
||||||
packet->append(STRING_WITH_LEN(" COMMENT "));
|
|
||||||
append_unescaped(packet, field->comment.str, field->comment.length);
|
|
||||||
}
|
|
||||||
append_create_options(thd, packet, field->option_list, check_options,
|
|
||||||
hton->field_options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
key_info= table->key_info;
|
key_info= table->key_info;
|
||||||
|
@ -278,7 +278,7 @@ public:
|
|||||||
Field **nullable_fields() { return record0_field; }
|
Field **nullable_fields() { return record0_field; }
|
||||||
void reset_extra_null_bitmap()
|
void reset_extra_null_bitmap()
|
||||||
{
|
{
|
||||||
size_t null_bytes= (trigger_table->s->stored_fields -
|
size_t null_bytes= (trigger_table->s->fields -
|
||||||
trigger_table->s->null_fields + 7)/8;
|
trigger_table->s->null_fields + 7)/8;
|
||||||
bzero(extra_null_bitmap, null_bytes);
|
bzero(extra_null_bitmap, null_bytes);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user