Hi Amit-san,

Thanks for your comments!

Attached patch is the revised patch. :)

I wonder two things below. What do you think?

1)
For now, I'm not sure it should be set current_child_table_relid to zero
when the current phase is changed from "acquiring inherited sample rows" to
"computing stats". See <Test result> bellow.

In the upthread discussion [1], Robert asked to *not* do such things,
that is, resetting some values due to phase change.  I'm not sure his
point applies to this case too though.

Yeah, I understood.
I'll check target relid of "computing stats" to re-read a code of
analyze command later. :)

2)
There are many "finalizing analyze" phases based on relids in the case
of partitioning tables. Would it better to fix the document? or it
would be better to reduce it to one?

<Document>
---------------------------------------------------------
       <entry><literal>finalizing analyze</literal></entry>
       <entry>
         The command is updating pg_class. When this phase is completed,
         <command>ANALYZE</command> will end.
---------------------------------------------------------

When a partitioned table is analyzed, its partitions are analyzed too.
So, the ANALYZE command effectively runs N + 1 times if there are N
partitions -- first analyze partitioned table to collect "inherited"
statistics by collecting row samples using
acquire_inherited_sample_rows(), then each partition to collect its
own statistics.  Note that this recursive application to ANALYZE to
partitions (child tables) only occurs for partitioned tables, not for
legacy inheritance.

Thanks for your explanation.
I understand Analyzing Partitioned table a little.
Below is my understanding. Is it right?

==================================================
In the case of partitioned table (N = 3)

 - Partitioned table name: p (relid is 100)
 - Partitioning table names: p1, p2, p3 (relids are 201, 202 and 203)

For now, We can get the following results by executing "analyze p;".

Num Phase                         relid current_child_table_relid
 1  acquire inherited sample rows  100   201
 2  acquire inherited sample rows  100   202
 3  acquire inherited sample rows  100   203
 4  computing stats                100   0
 5  finalizing analyze             100   0

 6  acquiring sample rows          201   0
 7  computing stats                201   0
 8  finalizing analyze             201   0

 9  acquiring sample rows          202   0
10  computing stats                202   0
11  finalizing analyze             202   0

12  acquiring sample rows          203   0
13  computing stats                203   0
14  finalizing analyze             203   0
==================================================


Thanks,
Tatsuro Yamada



Reply via email to