BUG #18393: Bad multiple "inplace" insert into domain of complex type

The Post Office <noreply@postgresql.org>

From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: pashaharkov@yandex.ru
Date: 2024-03-14T06:21:16Z
Lists: pgsql-bugs
The following bug has been logged on the website:

Bug reference:      18393
Logged by:          Pablo Kharo
Email address:      pashaharkov@yandex.ru
PostgreSQL version: 16.2
Operating system:   Mac OS 14.1
Description:        

Hi, i have found strange thing when was using domain of complex type.

When i was using insert like this to domain of type:
```
CREATE TYPE user_tp AS (
    uid          TEXT,
    email        text,
    timestamp TIMESTAMP
);

create domain user_domain as public.user_tp;

CREATE TABLE comps_tb (
    id  	SERIAL PRIMARY KEY,
    us  	user_domain NOT NULL
);

insert into public.comps_tb 
(
	us.uid,
	us.email
)
values 
(
	'213'::TEXT, 
	'email'::TEXT
),
(
	'321'::TEXT, 
	'email2'::TEXT
);

select 
	id,
	(us).uid,
	(us).email 
from 
	public.comps_tb;
```

I have output like this:
id|uid    |email     |
--+-------+----------+
 1|(213,,)|(,email,) |
 2|(321,,)|(,email2,)|

But i expecting 
id|uid    |email     |
--+-------+----------+
 1|213|email |
 2|321|email2|


So, it has created additional brackets in uid and email. BUT if i inserting
into this table only one element, it inserts without additional brackets. 
Also additional brackets are not creating when i am using complex type
itself - not domain,

Commits

  1. Make INSERT-from-multiple-VALUES-rows handle domain target columns.