Re: Problems with plan estimates in postgres_fdw

Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>

From: Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andrew Gierth <andrew@tao11.riddles.org.uk>, pgsql-hackers@postgresql.org
Date: 2019-01-30T11:10:41Z
Lists: pgsql-hackers

Attachments

(2018/12/28 15:50), Etsuro Fujita wrote:
> Attached is a new version of the
> patch.

Here is an updated version of the patch set.  Changes are:

* In the previous version, LIMIT without OFFSET was not performed 
remotely as the costs was calculated the same as the costs of performing 
it locally.  (Actually, such LIMIT was performed remotely in a case in 
the postgres_fdw regression test, but that was due to a bug :(.)  I 
think we should prefer performing such LIMIT remotely as that avoids 
extra row fetches from the remote that performing it locally might 
cause, so I tweaked the costs estimated in estimate_path_cost_size(), to 
ensure that we'll prefer performing such LIMIT remotely.  (I fixed the 
mentioned bug as well.)

* I fixed another bug in adjusting the costs of pre-sorted 
foreign-grouping paths.

* I tweaked comments, and rebased the patch set against the latest HEAD.

Best regards,
Etsuro Fujita

Commits

  1. postgres_fdw: Perform the (FINAL, NULL) upperrel operations remotely.

  2. Refactor create_limit_path() to share cost adjustment code with FDWs.

  3. postgres_fdw: Modify regression tests for EPQ-related planning problems.

  4. postgres_fdw: Perform the (ORDERED, NULL) upperrel operations remotely.

  5. Save PathTargets for distinct/ordered relations in root->upper_targets[].

  6. Split create_foreignscan_path() into three functions.

  7. Fix test case for 'outer pathkeys do not match mergeclauses' fix.

  8. postgres_fdw: Avoid 'outer pathkeys do not match mergeclauses' error.