Обсуждение: EXPLAIN doesn't explain operations on inheritance trees

Поиск
Список
Период
Сортировка

EXPLAIN doesn't explain operations on inheritance trees

От
Tom Lane
Дата:
If I create a class A and make subclasses A1 and A2, then
I get useful explanations when I say "EXPLAIN SELECT * FROM A1 ..."
but not if I ask about a query on the inheritance tree A*.

tgl=> EXPLAIN SELECT * FROM A* WHERE accountid = 3;
NOTICE:  QUERY PLAN:

Append  (cost=0.00 size=0 width=0)

EXPLAIN

With "explain verbose" it is possible to see that the APPEND plan
has substructure, but it's hard to see what's going on in that format.
How come plain "explain" doesn't show the subnodes of an APPEND plan?

            regards, tom lane

Re: [HACKERS] EXPLAIN doesn't explain operations on inheritance trees

От
Bruce Momjian
Дата:
> If I create a class A and make subclasses A1 and A2, then
> I get useful explanations when I say "EXPLAIN SELECT * FROM A1 ..."
> but not if I ask about a query on the inheritance tree A*.
>
> tgl=> EXPLAIN SELECT * FROM A* WHERE accountid = 3;
> NOTICE:  QUERY PLAN:
>
> Append  (cost=0.00 size=0 width=0)
>
> EXPLAIN
>
> With "explain verbose" it is possible to see that the APPEND plan
> has substructure, but it's hard to see what's going on in that format.
> How come plain "explain" doesn't show the subnodes of an APPEND plan?

I have just applied a patch to fix this.  Append is an unusual node,
because instead of checking left/right plans, you have to loop through a
list of plans.  EXPLAIN did not do this, nor did cost computations and
pprint().

Should be better now.

I renamed all the Append structure names because they were very
confusing to me.  I had created some of them for UNION, but named the
badly.

--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)