On Fri, Feb 10, 2017 at 03:19:47PM +0900, Amit Langote wrote: > The new partitioned tables do not contain any data by themselves. Any > data inserted into a partitioned table is routed to and stored in one of > its partitions. In fact, it is impossible to insert *any* data before a > partition (to be precise, a leaf partition) is created. It seems wasteful > then to allocate physical storage (files) for partitioned tables. If we > do not allocate the storage, then we must make sure that the right thing > happens when a command that is intended to manipulate a table's storage > encounters a partitioned table, the "right thing" here being that the > command's code either throws an error or warning (in some cases) if the > specified table is a partitioned table or ignores any partitioned tables > when it reads the list of relations to process from pg_class. Commands > that need to be taught about this are vacuum, analyze, truncate, and alter > table. Specifically: > > - In case of vacuum, specifying a partitioned table causes a warning > > - In case of analyze, we do not throw an error or warning but simply > avoid calling do_analyze_rel() *non-recursively*. Further in > acquire_inherited_sample_rows(), any partitioned tables in the list > returned by find_all_inheritors() are skipped. > > - In case of truncate, only the part which manipulates table's physical > storage is skipped for partitioned tables. > > - ATRewriteTables() skips on the AlteredTableInfo entries for partitioned > tables, because there is nothing to be done. > > - Since we cannot create indexes on partitioned tables anyway, there is > no need to handle cluster and reindex (they throw a meaningful error > already due to the lack of indexes.)
I don't think we are doing this, but if the parent table doesn't have a physical file pg_upgrade will need to be taught that. We have that case now for unlogged tables on standby servers that we need to address. -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + As you are, so once was I. As I am, so you will be. + + Ancient Roman grave inscription + -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers