Re: scan on inheritance parent with no children in current session
Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
From: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2017-08-14T05:49:20Z
Lists: pgsql-hackers
Attachments
- no_child_parent_scan_v2.patch (text/x-patch) patch v2
On Fri, Aug 11, 2017 at 9:08 PM, Robert Haas <robertmhaas@gmail.com> wrote: > > rhaas=# create table parent (a int) partition by list (a); > CREATE TABLE > rhaas=# create temp table child partition of parent for values in (1); > CREATE TABLE > rhaas=# explain verbose select * from parent; > QUERY PLAN > ------------------------------------------------------------------------- > Append (cost=0.00..35.50 rows=2550 width=4) > -> Seq Scan on pg_temp_3.child (cost=0.00..35.50 rows=2550 width=4) > Output: child.a > (3 rows) > > But the comments say: > > * A childless table is never considered to be an inheritance set; therefore > * a parent RTE must always have at least two associated AppendRelInfos. > > Yet, not. So at least the comments need to be updated; A partitioned table with at least a single partition is not childless. So, above comment doesn't apply here. In a regular inheritance there will be at least two AppendRelInfos one representing a scan on the parent table and others representing the scan on children. The comment needs to be distinguish between regular inheritance and partitioned inheritance. I have modified the comments that way. > not sure if we > want to try to eliminate the Append node in this case also. > The rest of the query tree and plan tree, expects parent's targetlist which may be different from that of the child. A notable difference is whole row expressions getting translated using ConvertRowExpr, which are not expected to pop up in a scan's targetlist. So we can't eliminate the Append node. -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company
Commits
-
Avoid unnecessary single-child Append nodes.
- 17a2a27b49ae 10.0 landed
- d57929afc706 11.0 landed
-
Don't scan partitioned tables.
- d3cc37f1d801 10.0 cited