pg_upgrade reserves 5 times MAXPGPATH, or 5120 characters, for the tablespace name of every object (table, toast table, index) in the database being upgraded. This adds up pretty quickly when there is a very large number of objects. It could be changed to char* to a separately allocated name that takes only as much space it needs. But maybe it would be better to point into os_info.old_tablespaces or something like that, as surely there are not going to be one independent file space per object.
typedef struct { ... char tablespace[MAXPGPATH]; } RelInfo; The struct FileNameMap has 4 more . Since there seems to be some interest in improving the scalability of pg_upgrade, this is one of the things to consider fixing. What is the best way to do it? Cheers, Jeff -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers