Re: Problems with plan estimates in postgres_fdw
От | Etsuro Fujita |
---|---|
Тема | Re: Problems with plan estimates in postgres_fdw |
Дата | |
Msg-id | 5C73B7FB.2010309@lab.ntt.co.jp обсуждение исходный текст |
Ответ на | Re: Problems with plan estimates in postgres_fdw (Antonin Houska <ah@cybertec.at>) |
Ответы |
Re: Problems with plan estimates in postgres_fdw
Re: Problems with plan estimates in postgres_fdw |
Список | pgsql-hackers |
(2019/02/23 0:21), Antonin Houska wrote: > Etsuro Fujita<fujita.etsuro@lab.ntt.co.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
В списке pgsql-hackers по дате отправления: