The following bug has been logged on the website:

Bug reference:      7808
Logged by:          Joe Van Dyk
Email address:      j...@tanga.com
PostgreSQL version: 9.2.1
Operating system:   OSX
Description:        

RhodiumToad says this is a bug in unnest, but honestly I don't quite
understand it all. 

He said: "if you have an array of composite, then a null element provokes
that error, as opposed to an element all of whose columns are null.
basically, unnest(array[null::g])  breaks, while
unnest(array[row(null,null)::g])  works"

My goal is to remove nulls from an array. The array could be an array of a
composite type.

begin;                                                                      
                       
                                                                            
                       
create table f (id integer);                                                
                       
insert into f values (1), (2);                                              
                       
                                                                            
                       
create table g (id integer, f_id integer);                                  
                       
insert into g values (1, 1);                                                
                       
insert into g values (2, 1);                                                
                       
                                                                            
                       
create function no_nulls(anyarray) returns anyarray as $$                   
                       
  select array(select x from unnest($1) x where not (x is null))            
                       
$$ language sql;                                                            
                       
                                                                            
                       
select f.id, no_nulls(array_agg(g))                                         
                       
from f                                                                      
                       
left join g on g.f_id = f.id                                                
                       
group by f;

                                                                            
                 
Expected Result:                                                            
                       
 id |     array_agg                                                         
                       
----+-------------------                                                    
                       
  1 | {"(1,1)","(2,1)"}                                                     
                       
  2 | {}                                                                    
                       
                                                                            
                       
                                                                            
                       
Getting this error:                                                         
                       
                                                                            
                       
psql:/tmp/n.sql:18: ERROR:  function returning set of rows cannot return
null value                 
CONTEXT:  SQL function "no_nulls" statement 1                               
                       
 



-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to