Bug #94983 Assertion `w->frame_buffer()->s->db_type()->db_type ... failed
Submitted: 11 Apr 2019 11:10 Modified: 26 May 2023 11:07
Reporter: Ramesh Sivaraman Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Optimizer Severity:S6 (Debug Builds)
Version:8.0.15 OS:Any
Assigned to: CPU Architecture:Any
Tags: debug

[11 Apr 2019 11:10] Ramesh Sivaraman
Description:
Assertion `w->frame_buffer()->s->db_type()->db_type == DB_TYPE_INNODB || cnt <= 1 || (w->last_row_output() == 0 && w->frame()->m_from->m_border_type == WBT_VALUE_FOLLOWING) || for_nth_value' failed.

How to repeat:
# mysqld options required for replay:  --sql_mode=
CREATE DATABASE test;
USE test;
CREATE TABLE t1(a BINARY (130)) ROW_FORMAT=REDUNDANT;
INSERT INTO t1 VALUES(1),(2),(3),(4),(5);
INSERT INTO t1 SELECT * FROM t1;
insert into t1 values(_utf8 0xe880bd);
insert INTO t1 values('1');
create temporary table t1(a int)select * from t1;
SELECT a,COUNT(a)OVER w,MIN(a) OVER w FROM t1 WINDOW w AS (ORDER BY a DESC RANGE BETWEEN 1 PRECEDING AND CURRENT ROW);
[11 Apr 2019 12:11] MySQL Verification Team
Hello Ramesh,

Thank you for he report and test case.
Observed that 8.0.15 debug build is affected.

thanks,
Umesh
[26 May 2023 11:07] MySQL Verification Team
Internally this is closed as duplicate of BUG 29201831 and per closure report - 

Documented fix as follows in the MySQL 8.0.16 changelog:

    The position hint for the last row in a range frame was updated
    to be one row past the actual last row in the frame.

Closed.