Jeff Davis <pg...@j-davis.com> writes: > We need to get the original element type on the import side somehow, > right? Otherwise it will be hard to tell whether '{1, 2, 3, 4}' has > element type "int4" or "text", which affects the binary representation > of the anyarray value in pg_statistic.
Yeah, but that problem exists no matter what. I haven't read enough of the patch to find where it's determining that, but I assume there's code in there to intuit the statistics storage type depending on the table column's data type and the statistics kind. > Either we need to get it at export time (which seems the most reliable > in principle, but problematic for older versions) and pass it as an > argument to pg_set_attribute_stats(); or we need to derive it reliably > from the table schema on the destination side, right? We could not trust the exporting side to tell us the correct answer; for one reason, it might be different across different releases. So "derive it reliably on the destination" is really the only option. I think that it's impossible to do this in the general case, since type-specific typanalyze functions can store pretty nearly whatever they like. However, the pg_stats view isn't going to show nonstandard statistics kinds anyway, so we are going to be lossy for custom statistics kinds. regards, tom lane