However, this function seems to accept -1 for the relpages parameter. Below is an example of execution: --- postgres=> CREATE TABLE data1(c1 INT PRIMARY KEY, c2 VARCHAR(10)); CREATE TABLE postgres=> SELECT pg_set_relation_stats('data1', relpages=>-1); pg_set_relation_stats ----------------------- t (1 row) postgres=> SELECT relname, relpages FROM pg_class WHERE relname='data1'; relname | relpages ---------+---------- data1 | -1 (1 row) ---
The attached patch modifies the pg_set_relation_stats function to work as described in the manual.
Regards, Noriyoshi Shinoda
Accepting -1 is correct. I thought I had fixed that in a recent patch. Perhaps signals got crossed somewhere along the way.
Just to be sure, I went back to v29, fixed a typo and some whitespace issues in stats_import.out, confirmed that it passed regression tests, then changed the relpages lower bound from -1 back to 0, and sure enough, the regression test for pg_upgrade failed again.
It seems that partitioned tables have a relpages of -1, so regression tests involving tables alpha_neg and alpha_pos (and 35 others, all seemingly partitioned) fail. So it was the docs that were wrong, not the code.
e839c8ecc9352b7754e74f19ace013c0c0d18613 doesn't include the stuff that modified pg_dump/pg_upgrade, so it wouldn't have turned up this problem.