Re: [PATCH] Push limit to sort through a subquery
Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
From: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
To: Douglas Doole <dougdoole@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2017-04-19T08:57:54Z
Lists: pgsql-hackers
The function pass_down_bound() is a recursive function. For SubqueryScanState we have to do something similar to ResultState i.e. call pass_down_bound() recursively on subqueryScanState->subplan. Please add this to the next commitfest. On Wed, Apr 19, 2017 at 6:09 AM, Douglas Doole <dougdoole@gmail.com> wrote: > We've hit a case where pass_down_bound() isn't pushing the row count limit > from limit into sort. The issue is that we're getting a subquery scan node > between the limit and the sort. The subquery is only doing column projection > and has no quals or SRFs so it should be safe to push the limit into the > sort. > > The query that hit the problem can be simplified to: > > SELECT * FROM (SELECT A,B FROM T ORDER BY C) LIMIT 5 > > (Yeah, the query's a little screwy in that the ORDER BY should really be > outside the subselect, but it came from a query generator, so that's a > different conversation.) > > Proposed patch is attached. > > - Doug > Salesforce > > > -- > Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-hackers > -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company
Commits
-
Propagate sort instrumentation from workers back to leader.
- bf11e7ee2e36 11.0 landed
-
Push tuple limits through Gather and Gather Merge.
- 3452dc5240da 11.0 landed
-
Code review for pushing LIMIT through subqueries.
- 3f4c7917b3bc 11.0 landed
-
Make new regression test case parallel-safe, and improve its output.
- 1177ab1dabf7 11.0 landed
-
Push limit through subqueries to underlying sort, where possible.
- 1f6d515a67ec 11.0 landed
-
Move targetlist SRF handling from expression evaluation to new executor node.
- 69f4b9c85f16 10.0 cited