Re: PATCH: Attempt to make dbsize a bit more consistent - Mailing list pgsql-hackers

From David Zhang
Subject Re: PATCH: Attempt to make dbsize a bit more consistent
Date
Msg-id f021ea0c-adcf-f663-e26e-66639c078ace@highgo.ca
Whole thread Raw
In response to PATCH: Attempt to make dbsize a bit more consistent  (gkokolatos@pm.me)
Responses Re: PATCH: Attempt to make dbsize a bit more consistent  (gkokolatos@pm.me)
List pgsql-hackers
I found the function "table_relation_size" is only used by buffer
manager for "RELKIND_RELATION", "RELKIND_TOASTVALUE" and
"RELKIND_MATVIEW", i.e.

         case RELKIND_RELATION:
         case RELKIND_TOASTVALUE:
         case RELKIND_MATVIEW:
             {
                 /*
                  * Not every table AM uses BLCKSZ wide fixed size blocks.
                  * Therefore tableam returns the size in bytes - but
for the
                  * purpose of this routine, we want the number of blocks.
                  * Therefore divide, rounding up.
                  */
                 uint64        szbytes;

                 szbytes = table_relation_size(relation, forkNum);

                 return (szbytes + (BLCKSZ - 1)) / BLCKSZ;
             }

So using "calculate_relation_size" and "calculate_toast_table_size" in
"calculate_table_size" is easy to understand and the original logic is
simple.


On 2020-08-27 6:38 a.m., gkokolatos@pm.me wrote:
> Hi all,
>
> this minor patch is attempting to force the use of the tableam api in dbsize where ever it is required.
>
> Apparently something similar was introduced for toast relations only. Intuitively it seems that the distinction
betweena table and a toast table is not needed. This patch treats tables, toast tables and materialized views equally. 
>
> Regards,
> //Georgios
Best regards,
--
David

Software Engineer
Highgo Software Inc. (Canada)
www.highgo.ca




pgsql-hackers by date:

Previous
From: James Coleman
Date:
Subject: Re: Binary search in ScalarArrayOpExpr for OR'd constant arrays
Next
From: Christoph Berg
Date:
Subject: Re: Collation versioning