Обсуждение: Old protocol fastpath calls borked?

Поиск
Список
Период
Сортировка

Old protocol fastpath calls borked?

От
Andres Freund
Дата:
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


Re: Old protocol fastpath calls borked?

От
Tom Lane
Дата:
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


Re: Old protocol fastpath calls borked?

От
Andres Freund
Дата:
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


Re: Old protocol fastpath calls borked?

От
Tom Lane
Дата:
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