Thread: Old protocol fastpath calls borked?
Hi, In parse_fcall_arguments_20(): c0a8c3ac13f8 (Tom Lane 2003-05-08 18:16:37 +0000 579) argsize = pq_getmsgint(msgBuf, 4); 0ac6298bb8ac (Tom Lane 2003-05-09 18:08:48 +0000 580) if (argsize == -1) 0ac6298bb8ac (Tom Lane 2003-05-09 18:08:48 +0000 581) { 0ac6298bb8ac (Tom Lane 2003-05-09 18:08:48 +0000 582) fcinfo->argnull[i] = true; 147d4bf3e5e3 (Tom Lane 2006-04-04 19:35:37 +0000 583) fcinfo->arg[i] = OidReceiveFunctionCall(typreceive,NULL, 147d4bf3e5e3 (Tom Lane 2006-04-04 19:35:37 +0000 584) typioparam,-1); 0ac6298bb8ac (Tom Lane 2003-05-09 18:08:48 +0000 585) continue; c0a8c3ac13f8 (Tom Lane 2003-05-08 18:16:37 +0000 586) } we appear to constantly setting argnull to true for all arguments? Since, apparently, 2003? I don't have a test-program at hand, but that kind of seems to suggest this never really has been used? Greetings, Andres Freund
Andres Freund <andres@anarazel.de> writes: > In parse_fcall_arguments_20(): > we appear to constantly setting argnull to true for all arguments? Uh, it looks to me like it does so only if the frontend sends a -1 length field, which is the protocol's convention for indicating a null. regards, tom lane
Hi, On 2019-01-24 17:04:32 -0500, Tom Lane wrote: > Andres Freund <andres@anarazel.de> writes: > > In parse_fcall_arguments_20(): > > we appear to constantly setting argnull to true for all arguments? > > Uh, it looks to me like it does so only if the frontend sends a -1 > length field, which is the protocol's convention for indicating a > null. Ah, brainfade. Probably triggered by the fact that I forgot that we call input functions even on NULL (which never quite made sense to me). Greetings, Andres Freund
Andres Freund <andres@anarazel.de> writes: > Ah, brainfade. Probably triggered by the fact that I forgot that we call > input functions even on NULL (which never quite made sense to me). That's so that domain_in can reject NULLs if the domain constraints say to do so. Mind you, the SQL committee should never have allowed NOT NULL domain constraints in the first place, because the concept is fundamentally incompatible with outer joins. But it's there and we try to honor it in this case. regards, tom lane