Re: Assigning ROW variable having NULL value to RECORD type variable doesn't give any structure to the RECORD variable.

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Ashutosh Sharma <ashu(dot)coek88(at)gmail(dot)com>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Subject: Re: Assigning ROW variable having NULL value to RECORD type variable doesn't give any structure to the RECORD variable.
Date: 2020-01-01 15:58:58
Message-ID: CAFj8pRAF+3Yq7PgHrb4_C0QTZPRB-bd8=wSs7KjQF9PL_LK9Yw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

st 1. 1. 2020 v 16:50 odesílatel Ashutosh Sharma <ashu(dot)coek88(at)gmail(dot)com>
napsal:

> Hi All,
>
> When a ROW variable having NULL value is assigned to a RECORD
> variable, it gives no structure to the RECORD type variable. Let's
> consider the following example.
>
> create table t1(a int, b text);
>
> insert into t1 values(1, 'str1');
>
> create or replace function f1() returns void as
> $$
> declare
> row t1%ROWTYPE;
> rec RECORD;
> begin
> row := NULL;
> rec := row;
> raise info 'rec.a = %, rec.b = %', rec.a, rec.b;
> end;
> $$ language plpgsql;
>
> In above example as 'row' variable is having NULL value, assigning
> this to 'rec' didn't give any structure to it although 'row' is having
> a predefined structure. Here is the error observed when above function
> is executed.
>
> select f1();
> ERROR: record "rec" is not assigned yet
>
> This started happening from the following git commit onwards,
>
> commit 4b93f57999a2ca9b9c9e573ea32ab1aeaa8bf496
> Author: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
> Date: Tue Feb 13 18:52:21 2018 -0500
>
> Make plpgsql use its DTYPE_REC code paths for composite-type variables.
>
> I know this is expected to happen considering the changes done in
> above commit because from this commit onwards, NULL value assigned to
> any row variable represents a true NULL composite value before this
> commit it used to be a tuple with each column having null value in it.
> But, the point is, even if the row variable is having a NULL value it
> still has a structure associated with it. Shouldn't that structure be
> transferred to RECORD variable when it is assigned with a ROW type
> variable ? Can we consider this behaviour change as a side effect of
> the improvement done in the RECORD type of variable?
>

+1

Pavel

> --
> With Regards,
> Ashutosh Sharma
> EnterpriseDB:http://www.enterprisedb.com
>
>
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2020-01-01 18:43:40 Re: backup manifests
Previous Message Ashutosh Sharma 2020-01-01 15:49:44 Assigning ROW variable having NULL value to RECORD type variable doesn't give any structure to the RECORD variable.