From: | Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp> |
---|---|
To: | Antonin Houska <ah(at)cybertec(dot)at> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Problems with plan estimates in postgres_fdw |
Date: | 2019-02-25 09:40:11 |
Message-ID: | 5C73B7FB.2010309@lab.ntt.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
(2019/02/23 0:21), Antonin Houska wrote:
> Etsuro Fujita<fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp> wrote:
>>> (2019/02/08 2:04), Antonin Houska wrote:
>>>> * regression tests: I think test(s) should be added for queries that have
>>>> ORDER BY clause but do not have GROUP BY (and also no LIMIT / OFFSET)
>>>> clause. I haven't noticed such tests.
>> I noticed that such queries would be processed by what we already have for
>> sort pushdown (ie, add_paths_with_pathkeys_for_rel()). I might be missing
>> something, though.
>
> What about an ORDER BY expression that contains multiple Var nodes? For
> example
>
> SELECT * FROM foo ORDER BY x + y;
>
> I think the base relation should not be able to generate paths with the
> corresponding pathkeys, since its target should (besides PlaceHolderVars,
> which should not appear in the plan of this simple query at all) only emit
> individual Vars.
Actually, add_paths_with_pathkeys_for_rel() generates such pre-sorted
paths for the base relation, as shown in the below example using HEAD
without the patchset proposed in this thread:
postgres=# explain verbose select a+b from ft1 order by a+b;
QUERY PLAN
--------------------------------------------------------------------------
Foreign Scan on public.ft1 (cost=100.00..200.32 rows=2560 width=4)
Output: (a + b)
Remote SQL: SELECT a, b FROM public.t1 ORDER BY (a + b) ASC NULLS LAST
(3 rows)
I think it is OK for that function to generate such paths, as tlists for
such paths would be adjusted in apply_scanjoin_target_to_paths(), by
doing create_projection_path() to them.
Conversely, it appears that add_foreign_ordered_paths() added by the
patchset would generate such pre-sorted paths *redundantly* when the
input_rel is the final scan/join relation. Will look into that.
Best regards,
Etsuro Fujita
From | Date | Subject | |
---|---|---|---|
Next Message | Dmitry Dolgov | 2019-02-25 10:01:05 | Re: Segfault when restoring -Fd dump on current HEAD |
Previous Message | Adrien NAYRAT | 2019-02-25 09:28:28 | Re: Remove Deprecated Exclusive Backup Mode |