On Sun, Oct 16, 2022 at 03:09:14PM -0700, Andres Freund wrote:
> On 2022-10-15 11:41:08 +0900, Michael Paquier wrote:
>> -/* flag bits for SetSingleFuncCall() */
>> -#define SRF_SINGLE_USE_EXPECTED     0x01    /* use expectedDesc as tupdesc 
>> */
>> -#define SRF_SINGLE_BLESS            0x02    /* validate tuple for SRF */
>> +/* flag bits for InitMaterializedSRF() */
>> +#define MAT_SRF_USE_EXPECTED_DESC   0x01    /* use expectedDesc as tupdesc 
>> */
>> +#define MAT_SRF_BLESS                               0x02    /* complete 
>> tuple descriptor, for
>> +                                                                            
>>          * a transient RECORD datatype */
> 
> I don't really know what "complete tuple descriptor" means. BlessTupleDesc()
> does say "make a completed tuple descriptor useful for SRFs" - but I don't
> think that means that Bless* makes them complete, but that they *have* to be
> complete to be blessed.

That's just assign_record_type_typmod(), which would make sure to fill
the cache for a RECORD tupdesc.  How about "fill the cache with the
information of the tuple descriptor type, for a transient RECORD
datatype"?  If you have a better, somewhat less confusing, idea, I am
open to suggestions.

>> @@ -2164,8 +2164,8 @@ elements_worker_jsonb(FunctionCallInfo fcinfo, const 
>> char *funcname,
>>  
>>      rsi = (ReturnSetInfo *) fcinfo->resultinfo;
>>  
>> -    SetSingleFuncCall(fcinfo,
>> -                                      SRF_SINGLE_USE_EXPECTED | 
>> SRF_SINGLE_BLESS);
>> +    InitMaterializedSRF(fcinfo,
>> +                                      MAT_SRF_USE_EXPECTED_DESC | 
>> MAT_SRF_BLESS);
> 
> Already was the case, so maybe not worth mucking with: Why the newline here,
> but not in other cases?

Yeah, that's fine as well.
--
Michael

Attachment: signature.asc
Description: PGP signature

Reply via email to