Thread: pg_get_statisticsextdef() is not quite the full shilling

pg_get_statisticsextdef() is not quite the full shilling

From
David Rowley
Date:
Hi,

Seems pg_get_statisticsextdef() has a couple of things wrong:

1. HeapTupleIsValid() called on the wrong tuple.
2. Did not schema qualify names.

Both of which were my mistakes.

The attached fixes.

I've also added some tests to give the function a bit of coverage.

I've purposefully left out the WITH syntax. We'll want to add some
logic around that once we have more than one statistic type supported.
I'd suggest not appending WITH if all supported types are present, and
only appending it if a true subset are present. That'll mean pg_dump
from v10 and import into v11 will get all types, if they did in v10,
and the same subset that they did in v10 when only a subset were
originally defined.

Since we support only 1 type now, nothing needs to happen there yet.



-- 
 David Rowley                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

Attachment

Re: pg_get_statisticsextdef() is not quite the full shilling

From
Alvaro Herrera
Date:
David Rowley wrote:

> Seems pg_get_statisticsextdef() has a couple of things wrong:
> 
> 1. HeapTupleIsValid() called on the wrong tuple.
> 2. Did not schema qualify names.

Actually we can solve both 1 and the first half of 2 by just using
generate_relation_name, which is less code and gives better results
(because we then schema-qualify the relation name conditionally).  I
patched the other half of 2 using your approach, but I wonder if we
should have a function StatisticsIsVisible or something.

> I've purposefully left out the WITH syntax. We'll want to add some
> logic around that once we have more than one statistic type supported.
> I'd suggest not appending WITH if all supported types are present, and
> only appending it if a true subset are present. That'll mean pg_dump
> from v10 and import into v11 will get all types, if they did in v10,
> and the same subset that they did in v10 when only a subset were
> originally defined.
> 
> Since we support only 1 type now, nothing needs to happen there yet.

Yeah, this sounds sensible to me.


-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services