Hi!
On 14.10.2024 16:41, Ilia Evdokimov wrote:
On 14.10.2024 12:25, Alexander Kuznetsov wrote:
Hello everyone,
I'd like to propose adding a check for the nullness of
tuplestorestate before dereferencing it
in src/backend/executor/nodeModifier.c. The patch is attached.
I am proposing this fix based on the assumption that tuplestorestate
could be NULL
since there is a check for it when calculating eof_tuplestore at line
85.
However, since this code hasn't been changed since 2006 and hasn't
caused any issues,
it is possible that the check for (tuplestorestate == NULL) is
redundant when calculating eof_tuplestore.
Hi Alexander,
The 'tuplestorestate' variable may be initialized at line 64 if it is
NULL. You should consider initializing this variable earlier.
To be honest, I'm not sure this change is necessary. Looking at the
code, I see that in ExecMaterial it is possible to handle a
tuplestorestate of NULL, and this error can be accessed if the flags are
not zero, but I think these cases have been worked out.
As I see it, node->eflags can be zero if it passes the output of a
subquery, during the initialization of the Material node execution, and
when the subquery is rescanned.
After the subplan scan is complete, we see that the eof_underlying
variable becomes true, and this part of the code will no longer be
accessible. tuplestorestate also becomes Null.
I also noticed that tuplestorestate=NULL is an indicator that the scan
is complete, so if this section of code is called, something is wrong
earlier in the code.
--
Regards,
Alena Rybakina
Postgres Professional