Change in CTE treatment in query plans?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- Subject: Change in CTE treatment in query plans?
- From: David Conlin <dc345@xxxxxxxxxx>
- Date: Tue, 15 Oct 2019 12:28:19 +0100
- User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0
Hi folks -
Does anyone know if there's been a change in the way values for CTEs are
displayed in query plans?
I think that it used to be the case that, for keys that include the
values of child nodes values (eg "Shared Hit Blocks", or "Actual Total
Time"), CTE scans included the CTE itself, even if it wasn't included as
one of its children in the plan. If you didn't subtract the CTE scan,
you would see surprising things, like sort operations reading table
data, or the total time of the nodes in a single-threaded query plan
adding up to significantly more than 100% of the total query time.
Now (I think since v11, but I'm not sure), it looks like these values
only include the children listed in the plan. For example, I've seen CTE
scans that have smaller times and buffers values than the CTE itself,
which couldn't be true if the CTE was included in the scan.
I'm much less sure, but I *think* the same is also true of other
InitPlan nodes - for example, if a node includes the filter "value >
$1", its time and buffers used to (but no longer does) include the total
for the InitPlan node which returned the value "$1".
Am I way off base with this, or did this change happen, and if so, am I
right in thinking that it was changed in v11?
Thanks in advance
Dave
[Postgresql General]
[Postgresql PHP]
[PHP Users]
[PHP Home]
[PHP on Windows]
[Kernel Newbies]
[PHP Classes]
[PHP Books]
[PHP Databases]
[Yosemite]