Hi hackers,

Please find the attached patch, to implement the ORDER BY ALL clause.
Commit ef38a4d97, implemented GROUP BY ALL clause, and this
feature follows the same pattern.

ORDER BY ALL is a form of ORDER BY that automatically adds all
non-junk columns from the SELECT target list to the ORDER BY clause.

This implementation supports:
  - ORDER BY ALL (default ascending order)
  - ORDER BY ALL ASC
  - ORDER BY ALL DESC
  - ORDER BY ALL NULLS FIRST/LAST
  - ORDER BY ALL ASC/DESC NULLS FIRST/LAST

The syntax works by creating a marker SortBy node with a NULL
node pointer that carries the sort direction and nulls ordering.
During query transformation, this marker is detected and expanded
to order by all non-junk columns in the target list with the
specified direction.

Implementation details:
- gram.y: Added ORDER BY ALL grammar with optional ASC/DESC and NULLS
  in both main sort_clause and PLpgSQL_Expr rules
- parse_clause.c: Implemented ORDER BY ALL expansion logic that iterates
  over target list columns
- analyze.c: Updated to pass orderByAll flag through transformation
- parsenodes.h: Added orderByAll boolean to SelectStmt and Query
- ruleutils.c: Added deparsing support for ORDER BY ALL that preserves
  sort direction and NULLS ordering in view definitions, including proper
  handling of implicit vs explicit ordering

Please take a look at the attached patch and let me know your thoughts.

Thanks,
Rushabh Lathia
www.EnterpriseDB.com

Attachment: 0001-Add-ORDER-BY-ALL-with-ASC-DESC-NULLS-support.patch
Description: Binary data

Attachment: 0002-Add-documentation-and-tests-for-ORDER-BY-ALL.patch
Description: Binary data

Reply via email to