When this patch was first added to a CF, I had a quick look at it, but
left it for a proper review by someone more familiar with PL/Python
internals for precisely this reason:

> 2) You removed the comment:
> -                     /*
> -                      * We don't support arrays of row types yet, so the 
> first argument
> -                      * can be NULL.
> -                      */
> But didn't change the code there. 
> I haven't delved deep enough into the code yet to understand the full
> meaning, but the comment would indicate that if arrays of row types
> are supported, the first argument cannot be null.

I had another look now, and I think removing the comment is fine. It
actually made no sense to me in context, so I went digging a little.

After following a plpython.c → plpy_*.c refactoring (#147c2482) and a
pgindent run (#65e806cb), I found that the comment was added along with
the code by this commit:

    commit db7386187f78dfc45b86b6f4f382f6b12cdbc693
    Author: Peter Eisentraut <pete...@gmx.net>
    Date:   Thu Dec 10 20:43:40 2009 +0000

        PL/Python array support
        Support arrays as parameters and return values of PL/Python functions.

At the time, the code looked like this:

+               else
+               {
+                       nulls[i] = false;
+                       /* We don't support arrays of row types yet, so the 
+                        * argument can be NULL. */
+                       elems[i] = arg->elm->func(NULL, arg->elm, obj);
+               }

Note that the first argument was actually NULL, so the comment made
sense when it was written. But the code was subsequently changed to
pass in arg->elm by the following commit:

    commit 09130e5867d49c72ef0f11bef30c5385d83bf194
    Author: Tom Lane <t...@sss.pgh.pa.us>
    Date:   Mon Oct 11 22:16:40 2010 -0400

        Fix plpython so that it again honors typmod while assigning to tuple 
        This was broken in 9.0 while improving plpython's conversion behavior 
        bytea and boolean.  Per bug report from maizi.

The comment should have been removed at the same time. So I don't think
there's a problem here.

> 3) This is such a simple change with no new infrastructure code
> (PLyObject_ToComposite already exists). Can you think of a reason
> why this wasn't done until now? Was it a simple miss or purposefully
> excluded?

This is not an authoritative answer: I think the infrastructure was
originally missing, but was later added in #bc411f25 for OUT parameters.
Perhaps it was overlooked at the time that the same code would suffice
for this earlier-missing case. (I've Cc:ed Peter E. in case he has any

I think the patch is ready for committer.

-- Abhijit

P.S. I'm a wee bit confused by this mail I'm replying to, because it's
signed "Ed" and looks like a response, but it's "From: Sim Zacks". I've
added the original author's address to the Cc: in case I misunderstood

Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to