From: | Ashutosh Sharma <ashu(dot)coek88(at)gmail(dot)com> |
---|---|
To: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Subject: | Assigning ROW variable having NULL value to RECORD type variable doesn't give any structure to the RECORD variable. |
Date: | 2020-01-01 15:49:44 |
Message-ID: | CAE9k0Pk5n_xt8b0v+tCXHoOk6LRUYBHsOecpWp2B=9KVzV_h5A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
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?
--
With Regards,
Ashutosh Sharma
EnterpriseDB:http://www.enterprisedb.com
From | Date | Subject | |
---|---|---|---|
Next Message | Pavel Stehule | 2020-01-01 15:58:58 | Re: Assigning ROW variable having NULL value to RECORD type variable doesn't give any structure to the RECORD variable. |
Previous Message | Thomas Munro | 2020-01-01 13:39:04 | WIP: WAL prefetch (another approach) |