]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Don't use_physical_tlist for an IOS with non-returnable columns.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 11 Feb 2022 20:23:52 +0000 (15:23 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 11 Feb 2022 20:23:52 +0000 (15:23 -0500)
commit14ee565f399b69b56eaed29c5e2f5a33ab45710f
tree290e95ffb0d5a6596cc63f00af27d75a6cf3bbd6
parent69cc15c316b8a0421cd5a8baa2a3041b22fa979c
Don't use_physical_tlist for an IOS with non-returnable columns.

createplan.c tries to save a runtime projection step by specifying
a scan plan node's output as being exactly the table's columns, or
index's columns in the case of an index-only scan, if there is not a
reason to do otherwise.  This logic did not previously pay attention
to whether an index's columns are returnable.  That worked, sort of
accidentally, until commit 9a3ddeb51 taught setrefs.c to reject plans
that try to read a non-returnable column.  I have no desire to loosen
setrefs.c's new check, so instead adjust use_physical_tlist() to not
try to optimize this way when there are non-returnable column(s).

Per report from Ryan Kelly.  Like the previous patch, back-patch
to all supported branches.

Discussion: https://postgr.es/m/CAHUie24ddN+pDNw7fkhNrjrwAX=fXXfGZZEHhRuofV_N_ftaSg@mail.gmail.com
src/backend/optimizer/plan/createplan.c
src/test/regress/expected/gist.out
src/test/regress/sql/gist.sql