Re: Partitioned index can be not dumped

Alvaro Herrera <alvherre@alvh.no-ip.org>

From: Álvaro Herrera <alvherre@alvh.no-ip.org>
To: Zhihong Yu <zyu@yugabyte.com>
Cc: Alexander Pyhalov <a.pyhalov@postgrespro.ru>, Pgsql Hackers <pgsql-hackers@postgresql.org>
Date: 2021-06-30T21:57:36Z
Lists: pgsql-hackers
On 2021-Jun-30, Zhihong Yu wrote:

> Hi,
> In that case, I wonder whether nindexes can be negated following the call
> to vac_open_indexes().
> 
>         vac_open_indexes(onerel, AccessShareLock, &nindexes, &Irel);
> +       nindexes = -nindexes;
> 
> That way, hasindex can be dropped.
> vac_update_relstats() call would become:
> 
>         vac_update_relstats(onerel, -1, totalrows,
> -                           0, false, InvalidTransactionId,
> +                           0, nindexes != 0, InvalidTransactionId,

Perhaps this works, but I don't think it's a readability improvement.

> My thinking is that without hasindex, the code is easier to maintain.

You have one less variable but one additional concept (negative
nindexes).  It doesn't seem easier to me, TBH, rather the opposite.

-- 
Álvaro Herrera                            39°49'30"S 73°17'W
                               https://www.EnterpriseDB.com/



Commits

  1. Don't reset relhasindex for partitioned tables on ANALYZE

  2. Set pg_class.reltuples for partitioned tables

  3. autovacuum: handle analyze for partitioned tables