Bug #118186 With row‑based replication (binlog_format = ROW), the function generates duplicate sequence values; in mixed mode (binlo
Submitted: 13 May 15:34 Modified: 19 May 11:51
Reporter: YELAMURI CHANDRABABU Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: Row Based Replication ( RBR ) Severity:S2 (Serious)
Version:8.0.22 OS:Linux
Assigned to: MySQL Verification Team CPU Architecture:Any

[13 May 15:34] YELAMURI CHANDRABABU
Description:
With row‑based replication (binlog_format = ROW), the function generates duplicate sequence values; in mixed mode (binlog_format = MIXED), no duplicates occur. Using AWS RDS 8.0.22

CREATE DEFINER=abc@% FUNCTION nextval(seq_name varchar(100)) RETURNS bigint
BEGIN
DECLARE cur_val bigint(20);
SELECT
sequence_cur_value INTO cur_val
FROM

sequence_data

WHERE
sequence_name = seq_name
;

IF cur_val IS NOT NULL THEN
UPDATE
sequence_data
SET
sequence_cur_value = IF (
(sequence_cur_value + sequence_increment) > sequence_max_value,
IF (
sequence_cycle = TRUE,
sequence_min_value,
NULL
),
sequence_cur_value + sequence_increment
)
WHERE
sequence_name = seq_name
;

END IF;

RETURN cur_val;

How to repeat:
Run the custom function in loop
[19 May 11:51] MySQL Verification Team
Hi,

I cannot reproduce this on latest MySQL Server versions.

Please retest with modern MySQL, 8.0.22 is very old.