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