On Oct 2, 2006, at 6:28 PM, Tom Lane wrote:
"Jim C. Nasby" <[EMAIL PROTECTED]> writes:
However, the test right above that means that we'll fail if the user
tries something like "row_variable := NULL;":

The patch you seem to have in mind would allow
        row_variable := int_variable;
to succeed if the int_variable chanced to contain NULL, which is surely
not very desirable.

Hrm... is there any reasonable way to catch that?

The real issue here is that the bare NULL has type UNKNOWN and we're not making any effort to cast it. I'm not sure whether it'd work to simply
apply exec_cast_value --- that looks like it's only meant to handle
scalars, where in general you'd need something close to
ExecEvalConvertRowtype().

Of course, setting a row variable to null is a lot more useful if we can actually test for it after the fact, and I'm not really sure how to make
that happen.

Doesn't IS NULL work (as of CVS HEAD)?

Ahh, so it does. Doesn't work with RECORD, though... which seems a bit surprising. I can't really think of a good reason why they should differ.

ERROR:  record "v_row" is not assigned yet
DETAIL: The tuple structure of a not-yet-assigned record is indeterminate.
CONTEXT:  PL/pgSQL function "test" line 4 at return

--
Jim Nasby                                            [EMAIL PROTECTED]
EnterpriseDB      http://enterprisedb.com      512.569.9461 (cell)



---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

              http://archives.postgresql.org

Reply via email to