From: | Julien Rouhaud <rjuju123(at)gmail(dot)com> |
---|---|
To: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
Cc: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | Re: pgsql: Support FETCH FIRST WITH TIES |
Date: | 2020-04-11 13:38:18 |
Message-ID: | CAOBaU_aLdPGU5wCpaowNLF-Q8328iR7mj1yJAhMOVsdLwY+sdg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers pgsql-hackers |
Hi Álvaro,
On Tue, Apr 7, 2020 at 10:28 PM Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> wrote:
>
> 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(at)gmail(dot)com>
> Reviewed-by: Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
> Reviewed-by: Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)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(-)
>
FTR I now get the following when compiling with -Wimplicit-fallthrough -Werror:
nodeLimit.c: In function ‘ExecLimit’:
nodeLimit.c:136:7: error: this statement may fall through
[-Werror=implicit-fallthrough=]
136 | if (ScanDirectionIsForward(direction))
| ^
nodeLimit.c:216:3: note: here
216 | case LIMIT_WINDOWEND_TIES:
| ^~~~
It seems that this fall-through comment:
[...]
else
{
node->lstate = LIMIT_WINDOWEND_TIES;
/* fall-through */
}
[...]
Is not recognized by my compiler (gcc (Gentoo 9.3.0 p1) 9.3.0). If
that's something we should fix, PFA a naive patch for that.
Attachment | Content-Type | Size |
---|---|---|
fix_ties_warning.diff | text/x-patch | 433 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2020-04-11 16:39:33 | pgsql: Make EXPLAIN report maximum hashtable usage across multiple resc |
Previous Message | Peter Eisentraut | 2020-04-11 13:13:15 | pgsql: Fix RELCACHE_FORCE_RELEASE issue |
From | Date | Subject | |
---|---|---|---|
Next Message | wenjing | 2020-04-11 14:54:38 | Re: [bug] Wrong bool value parameter |
Previous Message | Julien Rouhaud | 2020-04-11 13:24:47 | Re: WAL usage calculation patch |