pgsql: Support FETCH FIRST WITH TIES - Mailing list pgsql-committers

From Alvaro Herrera
Subject pgsql: Support FETCH FIRST WITH TIES
Date
Msg-id E1jLun1-0000uu-U9@gemulon.postgresql.org
Whole thread Raw
Responses Re: pgsql: Support FETCH FIRST WITH TIES  (Julien Rouhaud <rjuju123@gmail.com>)
List pgsql-committers
Support FETCH FIRST WITH TIES

WITH TIES is an option to the FETCH FIRST N ROWS clause (the SQL
standard's spelling of LIMIT), where you additionally get rows that
compare equal to the last of those N rows by the columns in the
mandatory ORDER BY clause.

There was a proposal by Andrew Gierth to implement this functionality in
a more powerful way that would yield more features, but the other patch
had not been finished at this time, so we decided to use this one for
now in the spirit of incremental development.

Author: Surafel Temesgen <surafel3000@gmail.com>
Reviewed-by: Álvaro Herrera <alvherre@alvh.no-ip.org>
Reviewed-by: Tomas Vondra <tomas.vondra@2ndquadrant.com>
Discussion: https://postgr.es/m/CALAY4q9ky7rD_A4vf=FVQvCGngm3LOes-ky0J6euMrg=_Se+ag@mail.gmail.com
Discussion: https://postgr.es/m/87o8wvz253.fsf@news-spur.riddles.org.uk

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/357889eb17bb9c9336c4f324ceb1651da616fe57

Modified Files
--------------
doc/src/sgml/ref/select.sgml            |  15 +--
src/backend/catalog/sql_features.txt    |   2 +-
src/backend/executor/nodeLimit.c        | 160 +++++++++++++++++++++++++++---
src/backend/nodes/copyfuncs.c           |   7 ++
src/backend/nodes/equalfuncs.c          |   2 +
src/backend/nodes/outfuncs.c            |   7 ++
src/backend/nodes/readfuncs.c           |   6 ++
src/backend/optimizer/plan/createplan.c |  45 ++++++++-
src/backend/optimizer/plan/planner.c    |   1 +
src/backend/optimizer/util/pathnode.c   |   2 +
src/backend/parser/analyze.c            |  21 ++--
src/backend/parser/gram.y               | 117 +++++++++++++++++-----
src/backend/parser/parse_clause.c       |  15 ++-
src/backend/utils/adt/ruleutils.c       |  27 ++++--
src/include/catalog/catversion.h        |   2 +-
src/include/nodes/execnodes.h           |   5 +
src/include/nodes/nodes.h               |  13 +++
src/include/nodes/parsenodes.h          |   2 +
src/include/nodes/pathnodes.h           |   1 +
src/include/nodes/plannodes.h           |   5 +
src/include/optimizer/pathnode.h        |   1 +
src/include/optimizer/planmain.h        |   5 +-
src/include/parser/parse_clause.h       |   3 +-
src/test/regress/expected/limit.out     | 167 ++++++++++++++++++++++++++++++++
src/test/regress/sql/limit.sql          |  48 +++++++++
25 files changed, 610 insertions(+), 69 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Adjust bytea get_bit/set_bit to use int8 not int4 for bit number
Next
From: Tom Lane
Date:
Subject: pgsql: Adjust bytea get_bit/set_bit to cope with bytea strings > 256MB.