Thread

Commits

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

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

    The Post Office <noreply@postgresql.org> — 2024-03-14T06:21:16Z

    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,
    
    
  2. Re: BUG #18393: Bad multiple "inplace" insert into domain of complex type

    Tom Lane <tgl@sss.pgh.pa.us> — 2024-03-14T15:12:12Z

    PG Bug reporting form <noreply@postgresql.org> writes:
    > Hi, i have found strange thing when was using domain of complex type.
    
    Yeah, that looks pretty broken.  It works correctly if you just
    use the composite type directly, but not with the domain.
    I'll go look for the cause in a bit.  Thanks for the report!
    
    			regards, tom lane