Skip to content

Commit

Permalink
Merge pull request percona#5336 from percona-ysorokin/dev/PS-8963-8.0…
Browse files Browse the repository at this point in the history
…-sequence_table_keyword

PS-8963 fix: SEQUENCE_TABLE Issue
  • Loading branch information
percona-ysorokin authored Jun 26, 2024
2 parents 923d936 + 1020604 commit 89a18a5
Show file tree
Hide file tree
Showing 23 changed files with 611 additions and 325 deletions.
3 changes: 2 additions & 1 deletion mysql-test/r/information_schema_keywords.result
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,7 @@ PASSWORD 0
PASSWORD_LOCK_TIME 0
PATH 0
PERCENT_RANK 1
PERCONA_SEQUENCE_TABLE 1
PERSIST 0
PERSIST_ONLY 0
PHASE 0
Expand Down Expand Up @@ -572,7 +573,7 @@ SECURITY 0
SELECT 1
SENSITIVE 1
SEPARATOR 1
SEQUENCE_TABLE 1
SEQUENCE_TABLE 0
SERIAL 0
SERIALIZABLE 0
SERVER 0
Expand Down
4 changes: 2 additions & 2 deletions mysql-test/r/mysqld--help-notwin.result
Original file line number Diff line number Diff line change
Expand Up @@ -1693,8 +1693,8 @@ The following options may be given as the first argument:
addition the thread commands that were in use until
8.0.25 are written to the slow query log.
--tf-sequence-table-max-upper-bound=#
Maximum number of records SEQUENCE_TABLE() table function
is allowed to generate.
Maximum number of records PERCONA_SEQUENCE_TABLE() table
function is allowed to generate.
--thread-cache-size=#
How many threads we should keep in a cache for reuse
--thread-handling=name
Expand Down
504 changes: 252 additions & 252 deletions mysql-test/r/percona_sequence_table.result

Large diffs are not rendered by default.

163 changes: 163 additions & 0 deletions mysql-test/r/percona_sequence_table_keyword.result
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
CREATE TABLE t1(id INT UNSIGNED) ENGINE=InnoDB;
INSERT INTO t1 VALUES(1);
CREATE TABLE percona_sequence_table(id INT UNSIGNED) ENGINE=InnoDB;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'percona_sequence_table(id INT UNSIGNED) ENGINE=InnoDB' at line 1
CREATE TABLE sequence_table(id INT UNSIGNED) ENGINE=InnoDB;
INSERT INTO sequence_table VALUES (1);
INSERT INTO sequence_table VALUES (2);
SELECT * FROM sequence_table;
id
1
2
SELECT * FROM sequence_table AS tt;
id
1
2
SELECT * FROM sequence_table tt;
id
1
2
SELECT * FROM (sequence_table);
id
1
2
SELECT * FROM (sequence_table AS tt);
id
1
2
SELECT * FROM (sequence_table tt);
id
1
2
SELECT * FROM (SELECT * FROM t1) AS sequence_table;
id
1
SELECT * FROM (SELECT * FROM t1) sequence_table;
id
1
SELECT sequence_table.* FROM (SELECT * FROM t1) AS sequence_table;
id
1
SELECT sequence_table.* FROM (SELECT * FROM t1) sequence_table;
id
1
SELECT * FROM (SELECT * FROM t1) AS sequence_table(val);
val
1
SELECT * FROM (SELECT * FROM t1) sequence_table(val);
val
1
SELECT sequence_table.* FROM (SELECT * FROM t1) AS sequence_table(val);
val
1
SELECT sequence_table.* FROM (SELECT * FROM t1) sequence_table(val);
val
1
SELECT sequence_table.val FROM (SELECT * FROM t1) AS sequence_table(val);
val
1
SELECT sequence_table.val FROM (SELECT * FROM t1) sequence_table(val);
val
1
SELECT val FROM (SELECT * FROM t1) AS sequence_table(val);
val
1
SELECT val FROM (SELECT * FROM t1) sequence_table(val);
val
1
SELECT * FROM (SELECT * FROM t1) AS tt(sequence_table);
sequence_table
1
SELECT * FROM (SELECT * FROM t1) tt(sequence_table);
sequence_table
1
SELECT tt.sequence_table FROM (SELECT * FROM t1) AS tt(sequence_table);
sequence_table
1
SELECT tt.sequence_table FROM (SELECT * FROM t1) tt(sequence_table);
sequence_table
1
SELECT sequence_table FROM (SELECT * FROM t1) AS tt(sequence_table);
sequence_table
1
SELECT sequence_table FROM (SELECT * FROM t1) tt(sequence_table);
sequence_table
1
SELECT * FROM (SELECT * FROM t1) AS sequence_table(sequence_table);
sequence_table
1
SELECT * FROM (SELECT * FROM t1) sequence_table(sequence_table);
sequence_table
1
SELECT sequence_table.sequence_table FROM (SELECT * FROM t1) AS sequence_table(sequence_table);
sequence_table
1
SELECT sequence_table.sequence_table FROM (SELECT * FROM t1) sequence_table(sequence_table);
sequence_table
1
SELECT sequence_table FROM (SELECT * FROM t1) AS sequence_table(sequence_table);
sequence_table
1
SELECT sequence_table FROM (SELECT * FROM t1) sequence_table(sequence_table);
sequence_table
1
SELECT * FROM t1 AS sequence_table;
id
1
SELECT * FROM t1 sequence_table;
id
1
SELECT * FROM t1 AS sequence_table WHERE id = 1;
id
1
SELECT * FROM t1 sequence_table WHERE id = 1;
id
1
SELECT * FROM t1 AS sequence_table WHERE sequence_table.id = 1;
id
1
SELECT * FROM t1 sequence_table WHERE sequence_table.id = 1;
id
1
SELECT * FROM SEQUENCE_TABLE(2) AS tt;
value
0
1
SELECT * FROM SEQUENCE_TABLE(2) tt;
value
0
1
SELECT * FROM SEQUENCE_TABLE(2) AS sequence_table;
value
0
1
SELECT sequence_table.* FROM SEQUENCE_TABLE(2) AS sequence_table;
value
0
1
SELECT value FROM SEQUENCE_TABLE(2) AS sequence_table;
value
0
1
SELECT sequence_table.value FROM SEQUENCE_TABLE(2) AS sequence_table;
value
0
1
SELECT * FROM sequence_table, SEQUENCE_TABLE(2) AS tt;
id value
2 0
1 0
2 1
1 1
INSERT INTO sequence_table VALUES (3);
INSERT INTO sequence_table SELECT value + 4 FROM SEQUENCE_TABLE(2) AS tt;
INSERT INTO t1 SELECT * FROM sequence_table;
UPDATE sequence_table SET id = id + 100;
UPDATE sequence_table SET id = id + 100 WHERE id IN (SELECT * FROM SEQUENCE_TABLE(10) AS tt);
UPDATE t1 SET id = id + 100 WHERE id IN (SELECT * FROM sequence_table);
DELETE FROM sequence_table WHERE id = 101;
DELETE FROM sequence_table WHERE id IN (SELECT * FROM SEQUENCE_TABLE(10) AS tt);
DELETE FROM t1 WHERE id IN (SELECT * FROM sequence_table);
TRUNCATE TABLE sequence_table;
DROP TABLE t1;
DROP TABLE sequence_table;
2 changes: 1 addition & 1 deletion mysql-test/suite/federated/r/federated_debug.result
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ SELECT * FROM test.t1;
id
SET @debug_save= @@GLOBAL.DEBUG;
SET @@GLOBAL.DEBUG='+d,PS-8747_wait_for_disconnect_after_check';
INSERT INTO test.t1 SELECT tt.* FROM SEQUENCE_TABLE(20000) AS tt;
INSERT INTO test.t1 SELECT tt.* FROM PERCONA_SEQUENCE_TABLE(20000) AS tt;
SET GLOBAL DEBUG= @debug_save;
DROP TABLE test.t1;
DROP SERVER test;
Expand Down
2 changes: 1 addition & 1 deletion mysql-test/suite/federated/t/federated_debug.test
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ SET @@GLOBAL.DEBUG='+d,PS-8747_wait_for_disconnect_after_check';

# Send data which will not fit into one communication packet, so client will try to send them
# before flush and reconnection.
INSERT INTO test.t1 SELECT tt.* FROM SEQUENCE_TABLE(20000) AS tt;
INSERT INTO test.t1 SELECT tt.* FROM PERCONA_SEQUENCE_TABLE(20000) AS tt;
SET GLOBAL DEBUG= @debug_save;

DROP TABLE test.t1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ CREATE TABLE source (id INT PRIMARY KEY AUTO_INCREMENT, a VARCHAR(100), b VARCHA
CREATE TABLE dest LIKE source;
# Populate source table with 64K records.
INSERT INTO source (a, b, c, d, e, hdl_source_id, hdl_created_date)
SELECT 'aaaaaaaaa', 'bbbbbbbbbb', 'cccccccccccccccc', 'dddddddddddddddddddddddddddd', 'eeeeeeeeeeeeeeeeee', value, NOW() FROM SEQUENCE_TABLE(65536) AS tt;
SELECT 'aaaaaaaaa', 'bbbbbbbbbb', 'cccccccccccccccc', 'dddddddddddddddddddddddddddd', 'eeeeeeeeeeeeeeeeee', value, NOW() FROM PERCONA_SEQUENCE_TABLE(65536) AS tt;
SELECT count(*) FROM source;
count(*)
65536
Expand Down
2 changes: 1 addition & 1 deletion mysql-test/suite/innodb/t/optimizer_temporary_table_2.test
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ CREATE TABLE dest LIKE source;

--echo # Populate source table with 64K records.
INSERT INTO source (a, b, c, d, e, hdl_source_id, hdl_created_date)
SELECT 'aaaaaaaaa', 'bbbbbbbbbb', 'cccccccccccccccc', 'dddddddddddddddddddddddddddd', 'eeeeeeeeeeeeeeeeee', value, NOW() FROM SEQUENCE_TABLE(65536) AS tt;
SELECT 'aaaaaaaaa', 'bbbbbbbbbb', 'cccccccccccccccc', 'dddddddddddddddddddddddddddd', 'eeeeeeeeeeeeeeeeee', value, NOW() FROM PERCONA_SEQUENCE_TABLE(65536) AS tt;
SELECT count(*) FROM source;

--echo # Run query that creates big intrinsic temporary table. Prior to the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ OPTIMIZE TABLE t1;
--echo *** creating a list of all printable characters (ASCII 33..126)
--echo *** (whitespace and control characters are excluded)

SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM SEQUENCE_TABLE(127 - 33) AS tt;
SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM PERCONA_SEQUENCE_TABLE(127 - 33) AS tt;
SELECT @special_characters;

--echo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ test.t1 optimize status OK

*** creating a list of all printable characters (ASCII 33..126)
*** (whitespace and control characters are excluded)
SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM SEQUENCE_TABLE(127 - 33) AS tt;
SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM PERCONA_SEQUENCE_TABLE(127 - 33) AS tt;
SELECT @special_characters;
@special_characters
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ test.t1 optimize status OK

*** creating a list of all printable characters (ASCII 33..126)
*** (whitespace and control characters are excluded)
SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM SEQUENCE_TABLE(127 - 33) AS tt;
SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM PERCONA_SEQUENCE_TABLE(127 - 33) AS tt;
SELECT @special_characters;
@special_characters
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ test.t1 optimize status OK

*** creating a list of all printable characters (ASCII 33..126)
*** (whitespace and control characters are excluded)
SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM SEQUENCE_TABLE(127 - 33) AS tt;
SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM PERCONA_SEQUENCE_TABLE(127 - 33) AS tt;
SELECT @special_characters;
@special_characters
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ test.t1 optimize status OK

*** creating a list of all printable characters (ASCII 33..126)
*** (whitespace and control characters are excluded)
SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM SEQUENCE_TABLE(127 - 33) AS tt;
SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM PERCONA_SEQUENCE_TABLE(127 - 33) AS tt;
SELECT @special_characters;
@special_characters
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ test.t1 optimize status OK

*** creating a list of all printable characters (ASCII 33..126)
*** (whitespace and control characters are excluded)
SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM SEQUENCE_TABLE(127 - 33) AS tt;
SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM PERCONA_SEQUENCE_TABLE(127 - 33) AS tt;
SELECT @special_characters;
@special_characters
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ test.t1 optimize status OK

*** creating a list of all printable characters (ASCII 33..126)
*** (whitespace and control characters are excluded)
SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM SEQUENCE_TABLE(127 - 33) AS tt;
SELECT GROUP_CONCAT(CHAR(value + 33 USING utf8mb4) SEPARATOR '') INTO @special_characters FROM PERCONA_SEQUENCE_TABLE(127 - 33) AS tt;
SELECT @special_characters;
@special_characters
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Expand Down
Loading

0 comments on commit 89a18a5

Please sign in to comment.