Opened 6 years ago

Last modified 3 months ago

#29850 closed New feature

Add window support for RowRange frames — at Version 10

Reported by: Daniel Fuchs Owned by: nobody
Component: Database layer (models, ORM) Version: dev
Severity: Normal Keywords: GSoC
Cc: Raphael Michel, Mads Jensen, John Speno Triage Stage: Ready for checkin
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no
Pull Requests:18935 merged, 17401 unmerged, 17423 merged, 17422 merged

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 in PostgreSQL 11+, SQLite 3.28+, and Oracle 21c+ other databases do not support exclusion (MariaDB doc, and MySQL doc).

Change History (8)

comment:1 by Tim Graham, 6 years ago

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

comment:3 by Mariusz Felisiak, 6 years ago

Description: modified (diff)
Version: 2.1master

comment:5 by Mariusz Felisiak, 5 years ago

Description: modified (diff)

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

comment:6 by Mariusz Felisiak, 4 years ago

Keywords: GSoC added

comment:7 by Manav Agarwal, 4 years ago

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 by Mariusz Felisiak, 4 years ago

Cc: Raphael Michel Mads Jensen added

comment:9 by John Speno, 3 years ago

Cc: John Speno added

comment:10 by Mariusz Felisiak, 2 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top