mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge remote-tracking branch 'origin/bb-10.2-ext' into 10.3
TODO: enable MDEV-13049 optimization for 10.3
This commit is contained in:
@ -498,3 +498,138 @@ previous value for t1
|
||||
drop sequence t1;
|
||||
create table t1 (a int) engine=sql_sequence;
|
||||
ERROR 42000: Unknown storage engine 'sql_sequence'
|
||||
#
|
||||
# MDEV-13711 assertion on CREATE LIKE fix
|
||||
#
|
||||
create sequence s;
|
||||
create table t like s;
|
||||
show create table t;
|
||||
Table Create Table
|
||||
t CREATE TABLE `t` (
|
||||
`next_not_cached_value` bigint(21) NOT NULL,
|
||||
`minimum_value` bigint(21) NOT NULL,
|
||||
`maximum_value` bigint(21) NOT NULL,
|
||||
`start_value` bigint(21) NOT NULL COMMENT 'start value when sequences is created or value if RESTART is used',
|
||||
`increment` bigint(21) NOT NULL COMMENT 'increment value',
|
||||
`cache_size` bigint(21) unsigned NOT NULL,
|
||||
`cycle_option` tinyint(1) unsigned NOT NULL COMMENT '0 if no cycles are allowed, 1 if the sequence should begin a new cycle when maximum_value is passed',
|
||||
`cycle_count` bigint(21) NOT NULL COMMENT 'How many cycles have been done'
|
||||
) ENGINE=MyISAM SEQUENCE=1
|
||||
show create sequence t;
|
||||
Table Create Table
|
||||
t CREATE SEQUENCE `t` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=MyISAM
|
||||
drop tables t, s;
|
||||
#
|
||||
# MDEV-13714 SEQUENCE option fix
|
||||
#
|
||||
create or replace table s (
|
||||
`next_value` bigint(21) not null,
|
||||
`min_value` bigint(21) not null,
|
||||
`max_value` bigint(21) not null,
|
||||
`start` bigint(21) not null,
|
||||
`increment` bigint(21) not null,
|
||||
`cache` bigint(21) not null,
|
||||
`cycle` tinyint(1) unsigned not null,
|
||||
`round` bigint(21) not null)
|
||||
sequence=0;
|
||||
create or replace table s2 (
|
||||
`next_value` bigint(21) not null,
|
||||
`min_value` bigint(21) not null,
|
||||
`max_value` bigint(21) not null,
|
||||
`start` bigint(21) not null,
|
||||
`increment` bigint(21) not null,
|
||||
`cache` bigint(21) not null,
|
||||
`cycle` tinyint(1) unsigned not null,
|
||||
`round` bigint(21) not null)
|
||||
sequence=default;
|
||||
show create table s;
|
||||
Table Create Table
|
||||
s CREATE TABLE `s` (
|
||||
`next_value` bigint(21) NOT NULL,
|
||||
`min_value` bigint(21) NOT NULL,
|
||||
`max_value` bigint(21) NOT NULL,
|
||||
`start` bigint(21) NOT NULL,
|
||||
`increment` bigint(21) NOT NULL,
|
||||
`cache` bigint(21) NOT NULL,
|
||||
`cycle` tinyint(1) unsigned NOT NULL,
|
||||
`round` bigint(21) NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
show create table s2;
|
||||
Table Create Table
|
||||
s2 CREATE TABLE `s2` (
|
||||
`next_value` bigint(21) NOT NULL,
|
||||
`min_value` bigint(21) NOT NULL,
|
||||
`max_value` bigint(21) NOT NULL,
|
||||
`start` bigint(21) NOT NULL,
|
||||
`increment` bigint(21) NOT NULL,
|
||||
`cache` bigint(21) NOT NULL,
|
||||
`cycle` tinyint(1) unsigned NOT NULL,
|
||||
`round` bigint(21) NOT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
show create sequence s;
|
||||
ERROR 42S02: 'test.s' is not a SEQUENCE
|
||||
show create sequence s2;
|
||||
ERROR 42S02: 'test.s2' is not a SEQUENCE
|
||||
drop table s,s2;
|
||||
#
|
||||
# MDEV-13721 Assertion is_lock_owner() failed in mysql_rm_table_no_locks
|
||||
#
|
||||
create or replace sequence s;
|
||||
create temporary table s (i int);
|
||||
drop sequence s;
|
||||
show create table s;
|
||||
Table Create Table
|
||||
s CREATE TEMPORARY TABLE `s` (
|
||||
`i` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table s;
|
||||
create or replace sequence s;
|
||||
create temporary sequence s;
|
||||
show create table s;
|
||||
Table Create Table
|
||||
s CREATE TEMPORARY TABLE `s` (
|
||||
`next_not_cached_value` bigint(21) NOT NULL,
|
||||
`minimum_value` bigint(21) NOT NULL,
|
||||
`maximum_value` bigint(21) NOT NULL,
|
||||
`start_value` bigint(21) NOT NULL COMMENT 'start value when sequences is created or value if RESTART is used',
|
||||
`increment` bigint(21) NOT NULL COMMENT 'increment value',
|
||||
`cache_size` bigint(21) unsigned NOT NULL,
|
||||
`cycle_option` tinyint(1) unsigned NOT NULL COMMENT '0 if no cycles are allowed, 1 if the sequence should begin a new cycle when maximum_value is passed',
|
||||
`cycle_count` bigint(21) NOT NULL COMMENT 'How many cycles have been done'
|
||||
) ENGINE=MyISAM SEQUENCE=1
|
||||
drop sequence s;
|
||||
show create table s;
|
||||
Table Create Table
|
||||
s CREATE TABLE `s` (
|
||||
`next_not_cached_value` bigint(21) NOT NULL,
|
||||
`minimum_value` bigint(21) NOT NULL,
|
||||
`maximum_value` bigint(21) NOT NULL,
|
||||
`start_value` bigint(21) NOT NULL COMMENT 'start value when sequences is created or value if RESTART is used',
|
||||
`increment` bigint(21) NOT NULL COMMENT 'increment value',
|
||||
`cache_size` bigint(21) unsigned NOT NULL,
|
||||
`cycle_option` tinyint(1) unsigned NOT NULL COMMENT '0 if no cycles are allowed, 1 if the sequence should begin a new cycle when maximum_value is passed',
|
||||
`cycle_count` bigint(21) NOT NULL COMMENT 'How many cycles have been done'
|
||||
) ENGINE=MyISAM SEQUENCE=1
|
||||
drop table s;
|
||||
create or replace sequence s;
|
||||
create temporary sequence s;
|
||||
drop temporary sequence s;
|
||||
show create table s;
|
||||
Table Create Table
|
||||
s CREATE TABLE `s` (
|
||||
`next_not_cached_value` bigint(21) NOT NULL,
|
||||
`minimum_value` bigint(21) NOT NULL,
|
||||
`maximum_value` bigint(21) NOT NULL,
|
||||
`start_value` bigint(21) NOT NULL COMMENT 'start value when sequences is created or value if RESTART is used',
|
||||
`increment` bigint(21) NOT NULL COMMENT 'increment value',
|
||||
`cache_size` bigint(21) unsigned NOT NULL,
|
||||
`cycle_option` tinyint(1) unsigned NOT NULL COMMENT '0 if no cycles are allowed, 1 if the sequence should begin a new cycle when maximum_value is passed',
|
||||
`cycle_count` bigint(21) NOT NULL COMMENT 'How many cycles have been done'
|
||||
) ENGINE=MyISAM SEQUENCE=1
|
||||
drop table s;
|
||||
create temporary sequence s;
|
||||
drop temporary table s;
|
||||
create temporary table s (i int);
|
||||
drop temporary sequence s;
|
||||
ERROR 42S02: Unknown SEQUENCE: 'test.s'
|
||||
drop table s;
|
||||
|
@ -375,3 +375,77 @@ drop sequence t1;
|
||||
|
||||
--error ER_UNKNOWN_STORAGE_ENGINE
|
||||
create table t1 (a int) engine=sql_sequence;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-13711 assertion on CREATE LIKE fix
|
||||
--echo #
|
||||
|
||||
create sequence s;
|
||||
create table t like s;
|
||||
show create table t;
|
||||
show create sequence t;
|
||||
drop tables t, s;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-13714 SEQUENCE option fix
|
||||
--echo #
|
||||
|
||||
create or replace table s (
|
||||
`next_value` bigint(21) not null,
|
||||
`min_value` bigint(21) not null,
|
||||
`max_value` bigint(21) not null,
|
||||
`start` bigint(21) not null,
|
||||
`increment` bigint(21) not null,
|
||||
`cache` bigint(21) not null,
|
||||
`cycle` tinyint(1) unsigned not null,
|
||||
`round` bigint(21) not null)
|
||||
sequence=0;
|
||||
|
||||
create or replace table s2 (
|
||||
`next_value` bigint(21) not null,
|
||||
`min_value` bigint(21) not null,
|
||||
`max_value` bigint(21) not null,
|
||||
`start` bigint(21) not null,
|
||||
`increment` bigint(21) not null,
|
||||
`cache` bigint(21) not null,
|
||||
`cycle` tinyint(1) unsigned not null,
|
||||
`round` bigint(21) not null)
|
||||
sequence=default;
|
||||
|
||||
show create table s;
|
||||
show create table s2;
|
||||
--error ER_NOT_SEQUENCE
|
||||
show create sequence s;
|
||||
--error ER_NOT_SEQUENCE
|
||||
show create sequence s2;
|
||||
drop table s,s2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-13721 Assertion is_lock_owner() failed in mysql_rm_table_no_locks
|
||||
--echo #
|
||||
|
||||
create or replace sequence s;
|
||||
create temporary table s (i int);
|
||||
drop sequence s;
|
||||
show create table s;
|
||||
drop table s;
|
||||
|
||||
create or replace sequence s;
|
||||
create temporary sequence s;
|
||||
show create table s;
|
||||
drop sequence s;
|
||||
show create table s;
|
||||
drop table s;
|
||||
|
||||
create or replace sequence s;
|
||||
create temporary sequence s;
|
||||
drop temporary sequence s;
|
||||
show create table s;
|
||||
drop table s;
|
||||
|
||||
create temporary sequence s;
|
||||
drop temporary table s;
|
||||
create temporary table s (i int);
|
||||
--error ER_UNKNOWN_SEQUENCES
|
||||
drop temporary sequence s;
|
||||
drop table s;
|
||||
|
@ -512,3 +512,10 @@ def PREVIOUS VALUE FOR s1 8 20 1 Y 32896 0 63
|
||||
NEXT VALUE FOR s1 PREVIOUS VALUE FOR s1
|
||||
1 1
|
||||
DROP SEQUENCE s1;
|
||||
#
|
||||
# MDEV-13720 ER_NOT_SEQUENCE for temporary table
|
||||
#
|
||||
create temporary table tmp (i int);
|
||||
select next value for tmp;
|
||||
ERROR 42S02: 'test.tmp' is not a SEQUENCE
|
||||
drop table tmp;
|
||||
|
@ -260,3 +260,12 @@ SELECT
|
||||
DROP SEQUENCE s1;
|
||||
--enable_ps_protocol
|
||||
--disable_metadata
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-13720 ER_NOT_SEQUENCE for temporary table
|
||||
--echo #
|
||||
|
||||
create temporary table tmp (i int);
|
||||
--error ER_NOT_SEQUENCE
|
||||
select next value for tmp;
|
||||
drop table tmp;
|
||||
|
7
mysql-test/suite/sql_sequence/partition.result
Normal file
7
mysql-test/suite/sql_sequence/partition.result
Normal file
@ -0,0 +1,7 @@
|
||||
#
|
||||
# MDEV-13715 ha_partition::engine_name() segfault fix
|
||||
#
|
||||
create sequence s;
|
||||
alter table s partition by hash(start_value) partitions 2;
|
||||
ERROR HY000: Table storage engine 'partition' does not support the create option 'SEQUENCE'
|
||||
drop sequence s;
|
11
mysql-test/suite/sql_sequence/partition.test
Normal file
11
mysql-test/suite/sql_sequence/partition.test
Normal file
@ -0,0 +1,11 @@
|
||||
--source include/have_partition.inc
|
||||
--source include/have_sequence.inc
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-13715 ha_partition::engine_name() segfault fix
|
||||
--echo #
|
||||
|
||||
create sequence s;
|
||||
--error ER_ILLEGAL_HA_CREATE_OPTION
|
||||
alter table s partition by hash(start_value) partitions 2;
|
||||
drop sequence s;
|
108
mysql-test/suite/sql_sequence/slave_nextval.result
Normal file
108
mysql-test/suite/sql_sequence/slave_nextval.result
Normal file
@ -0,0 +1,108 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE SEQUENCE s;
|
||||
INSERT INTO s VALUES (1,1,4,1,1,1,0,0);
|
||||
show create sequence s;
|
||||
Table Create Table
|
||||
s CREATE SEQUENCE `s` start with 1 minvalue 1 maxvalue 4 increment by 1 cache 1 nocycle ENGINE=MyISAM
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
1
|
||||
connection slave;
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
2
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
3
|
||||
connection master;
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
2
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
3
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
4
|
||||
select * from s;
|
||||
next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count
|
||||
5 1 4 1 1 1 0 0
|
||||
connection slave;
|
||||
select * from s;
|
||||
next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count
|
||||
5 1 4 1 1 1 0 0
|
||||
connection master;
|
||||
DROP SEQUENCE s;
|
||||
CREATE SEQUENCE s;
|
||||
INSERT INTO s VALUES (1,1,3,1,1,1,1,0);
|
||||
show create sequence s;
|
||||
Table Create Table
|
||||
s CREATE SEQUENCE `s` start with 1 minvalue 1 maxvalue 3 increment by 1 cache 1 cycle ENGINE=MyISAM
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
1
|
||||
connection slave;
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
2
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
3
|
||||
connection master;
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
2
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
3
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
1
|
||||
select * from s;
|
||||
next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count
|
||||
2 1 3 1 1 1 1 1
|
||||
connection slave;
|
||||
select * from s;
|
||||
next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count
|
||||
2 1 3 1 1 1 1 1
|
||||
connection master;
|
||||
DROP SEQUENCE s;
|
||||
CREATE SEQUENCE s;
|
||||
INSERT INTO s VALUES (1,1,3,1,1,1,1,0);
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
1
|
||||
CREATE PROCEDURE pr(n INT)
|
||||
BEGIN
|
||||
DECLARE i INT DEFAULT 0;
|
||||
WHILE i < n
|
||||
DO
|
||||
SELECT NEXTVAL(s);
|
||||
SELECT NEXTVAL(s);
|
||||
SELECT NEXTVAL(s);
|
||||
SET i= i+1;
|
||||
END WHILE;
|
||||
END $
|
||||
connect con1,localhost,root,,;
|
||||
CALL pr(100);
|
||||
connect con2,localhost,root,,;
|
||||
CALL pr(100);
|
||||
connect con3,localhost,root,,;
|
||||
CALL pr(100);
|
||||
connect con4,localhost,root,,;
|
||||
CALL pr(100);
|
||||
connect con5,localhost,root,,;
|
||||
CALL pr(100);
|
||||
connect con6,localhost,root,,;
|
||||
CALL pr(100);
|
||||
connect con7,localhost,root,,;
|
||||
CALL pr(100);
|
||||
connect con8,localhost,root,,;
|
||||
CALL pr(100);
|
||||
connection master;
|
||||
connection slave;
|
||||
connection master;
|
||||
DROP SEQUENCE s;
|
||||
DROP PROCEDURE pr;
|
||||
include/rpl_end.inc
|
132
mysql-test/suite/sql_sequence/slave_nextval.test
Normal file
132
mysql-test/suite/sql_sequence/slave_nextval.test
Normal file
@ -0,0 +1,132 @@
|
||||
--source include/master-slave.inc
|
||||
--source include/have_binlog_format_row.inc
|
||||
|
||||
#
|
||||
# MDEV-14092 NEXTVAL() fails on slave
|
||||
#
|
||||
|
||||
CREATE SEQUENCE s;
|
||||
INSERT INTO s VALUES (1,1,4,1,1,1,0,0);
|
||||
show create sequence s;
|
||||
SELECT NEXTVAL(s);
|
||||
|
||||
--sync_slave_with_master
|
||||
SELECT NEXTVAL(s);
|
||||
SELECT NEXTVAL(s);
|
||||
|
||||
--connection master
|
||||
SELECT NEXTVAL(s);
|
||||
SELECT NEXTVAL(s);
|
||||
SELECT NEXTVAL(s);
|
||||
|
||||
select * from s;
|
||||
|
||||
--sync_slave_with_master
|
||||
|
||||
select * from s;
|
||||
--connection master
|
||||
DROP SEQUENCE s;
|
||||
|
||||
#
|
||||
# Same as above, but with cycles
|
||||
#
|
||||
|
||||
CREATE SEQUENCE s;
|
||||
INSERT INTO s VALUES (1,1,3,1,1,1,1,0);
|
||||
show create sequence s;
|
||||
SELECT NEXTVAL(s);
|
||||
|
||||
--sync_slave_with_master
|
||||
SELECT NEXTVAL(s);
|
||||
SELECT NEXTVAL(s);
|
||||
|
||||
--connection master
|
||||
SELECT NEXTVAL(s);
|
||||
SELECT NEXTVAL(s);
|
||||
SELECT NEXTVAL(s);
|
||||
|
||||
select * from s;
|
||||
|
||||
--sync_slave_with_master
|
||||
|
||||
select * from s;
|
||||
|
||||
--connection master
|
||||
DROP SEQUENCE s;
|
||||
|
||||
# Here is a bit more complicated concurrent scenario that
|
||||
# causes the same effect without any updates on the slave. You might
|
||||
# need to replace 100 with a bigger value if it doesn't happen on your
|
||||
# machine right away.
|
||||
|
||||
CREATE SEQUENCE s;
|
||||
INSERT INTO s VALUES (1,1,3,1,1,1,1,0);
|
||||
SELECT NEXTVAL(s);
|
||||
|
||||
--delimiter $
|
||||
CREATE PROCEDURE pr(n INT)
|
||||
BEGIN
|
||||
DECLARE i INT DEFAULT 0;
|
||||
WHILE i < n
|
||||
DO
|
||||
SELECT NEXTVAL(s);
|
||||
SELECT NEXTVAL(s);
|
||||
SELECT NEXTVAL(s);
|
||||
SET i= i+1;
|
||||
END WHILE;
|
||||
END $
|
||||
--delimiter ;
|
||||
|
||||
--connect (con1,localhost,root,,)
|
||||
--send CALL pr(100)
|
||||
--connect (con2,localhost,root,,)
|
||||
--send CALL pr(100)
|
||||
--connect (con3,localhost,root,,)
|
||||
--send CALL pr(100)
|
||||
--connect (con4,localhost,root,,)
|
||||
--send CALL pr(100)
|
||||
--connect (con5,localhost,root,,)
|
||||
--send CALL pr(100)
|
||||
--connect (con6,localhost,root,,)
|
||||
--send CALL pr(100)
|
||||
--connect (con7,localhost,root,,)
|
||||
--send CALL pr(100)
|
||||
--connect (con8,localhost,root,,)
|
||||
--send CALL pr(100)
|
||||
|
||||
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
|
||||
--connection con1
|
||||
--reap
|
||||
--connection con2
|
||||
--reap
|
||||
--connection con3
|
||||
--reap
|
||||
--connection con4
|
||||
--reap
|
||||
--connection con5
|
||||
--reap
|
||||
--connection con6
|
||||
--reap
|
||||
--connection con7
|
||||
--reap
|
||||
--connection con8
|
||||
--reap
|
||||
|
||||
--enable_query_log
|
||||
--enable_result_log
|
||||
|
||||
--connection master
|
||||
|
||||
--sync_slave_with_master
|
||||
|
||||
--connection master
|
||||
DROP SEQUENCE s;
|
||||
DROP PROCEDURE pr;
|
||||
|
||||
#
|
||||
# Cleanup
|
||||
#
|
||||
--source include/rpl_end.inc
|
Reference in New Issue
Block a user