Re: Shared detoast Datum proposal - Mailing list pgsql-hackers

From Andy Fan
Subject Re: Shared detoast Datum proposal
Date
Msg-id 87v862dbht.fsf@163.com
Whole thread Raw
In response to Re: Shared detoast Datum proposal  (Tomas Vondra <tomas.vondra@enterprisedb.com>)
Responses Re: Shared detoast Datum proposal
List pgsql-hackers
Tomas Vondra <tomas.vondra@enterprisedb.com> writes:

> On 3/3/24 07:10, Andy Fan wrote:
>> 
>> Hi,
>> 
>> Here is a updated version, the main changes are:
>> 
>> 1. an shared_detoast_datum.org file which shows the latest desgin and
>> pending items during discussion. 
>> 2. I removed the slot->pre_detoast_attrs totally.
>> 3. handle some pg_detoast_datum_slice use case.
>> 4. Some implementation improvement.
>> 
>
> I only very briefly skimmed the patch, and I guess most of my earlier
> comments still apply.

Yes, the overall design is not changed.

> But I'm a bit surprised the patch needs to pass a
> MemoryContext to so many places as a function argument - that seems to
> go against how we work with memory contexts. Doubly so because it seems
> to only ever pass CurrentMemoryContext anyway. So what's that about?

I think you are talking about the argument like this:
 
 /* ----------
- * detoast_attr -
+ * detoast_attr_ext -
  *
  *    Public entry point to get back a toasted value from compression
  *    or external storage.  The result is always non-extended varlena form.
  *
+ * ctx: The memory context which the final value belongs to.
+ *
  * Note some callers assume that if the input is an EXTERNAL or COMPRESSED
  * datum, the result will be a pfree'able chunk.
  * ----------
  */

+extern struct varlena *
+detoast_attr_ext(struct varlena *attr, MemoryContext ctx)

This is mainly because 'detoast_attr' will apply more memory than the
"final detoast datum" , for example the code to scan toast relation
needs some memory as well, and what I want is just keeping the memory
for the final detoast datum so that other memory can be released sooner,
so I added the function argument for that. 

-- 
Best Regards
Andy Fan




pgsql-hackers by date:

Previous
From: jian he
Date:
Subject: Re: Improve readability by using designated initializers when possible
Next
From: Michael Paquier
Date:
Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation