RE: New Window Function: ROW_NUMBER_DESC() OVER() ?

From: Maiquel Grassi <grassi(at)hotmail(dot)com(dot)br>
To: David Rowley <dgrowleyml(at)gmail(dot)com>, Michał Kłeczek <michal(at)kleczek(dot)org>
Cc: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: RE: New Window Function: ROW_NUMBER_DESC() OVER() ?
Date: 2024-01-17 02:17:22
Message-ID: CP4P284MB24830778F475F3C79984D676EC722@CP4P284MB2483.BRAP284.PROD.OUTLOOK.COM
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

As far as I see your proposal, you want to allow something that is
undefined to be reversed. I don't think this is a good idea at all.
As mentioned by others, you should have ORDER BY clauses and just add
a DESC.

If you were looking for something to optimize in this rough area, then
perhaps adding some kind of "Backward WindowAgg" node (by overloading
the existing node) to allow queries such as the following to be
executed without an additional sort.

SELECT a,row_number() over (order by a desc) from t order by a;

The planner complexity is likely fairly easy to implement that. I
don't think we'd need to generate any additional Paths. We could
invent some pathkeys_contained_in_reverse() function and switch on the
Backward flag if it is.

The complexity would be in nodeWindowAgg.c... perhaps too much
complexity for it to be worthwhile and not add additional overhead to
the non-backward case.

Or, it might be easier to invent "Backward Materialize" instead and
just have the planner use on of those instead of the final sort.

David

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jelte Fennema-Nio 2024-01-17 02:21:26 Re: Add new protocol message to change GUCs for usage with future protocol-only GUCs
Previous Message Masahiko Sawada 2024-01-17 01:38:47 Re: [PoC] Improve dead tuple storage for lazy vacuum