Opened 3 years ago

Last modified 7 weeks ago

#29850 new New feature

Add window support for RowRange frames

Reported by: Daniel Fuchs Owned by: nobody
Component: Database layer (models, ORM) Version: dev
Severity: Normal Keywords: GSoC
Cc: Raphael Michel, Mads Jensen Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Mariusz Felisiak)

The current RowRange frame is missing handling for several cases.

None of the following are currently supported:
RowRange(start=-2, end=-1)
ROWS BETWEEN 2 PRECEDING AND 1 PRECEDING
RowRange(start=1, end=2)
ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING

It's also missing support for EXCLUDE.
ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING EXCLUDE CURRENT ROW


Frame exclusion is supported only in PostgreSQL 11+ and SQLite 3.28+, other databases do not support exclusion (see Oracle 18c doc, MariaDB doc, and MySQL doc).

Change History (6)

comment:1 Changed 3 years ago by Tim Graham

Summary: Poor Window Support for RowRange FramesAdd window support for RowRange frames
Triage Stage: UnreviewedAccepted
Type: UncategorizedNew feature

comment:3 Changed 3 years ago by Mariusz Felisiak

Description: modified (diff)
Version: 2.1master

comment:5 Changed 2 years ago by Mariusz Felisiak

Description: modified (diff)

Exclusion is supported also on SQLite 3.28+ (see release notes).

comment:6 Changed 11 months ago by Mariusz Felisiak

Keywords: GSoC added

comment:7 Changed 10 months ago by Manav Agarwal

Is it a good idea to add an argument named as exclude in WindowFrame class in django.db.models.expressions? This argument will contain the F() value of the row/range to be excluded.

comment:8 Changed 7 weeks ago by Mariusz Felisiak

Cc: Raphael Michel Mads Jensen added
Note: See TracTickets for help on using tickets.
Back to Top