I am trying to select arrays in a set-returning function, but receiving
the error: "array value must start with "{" or dimension information".

This issue appears to relate to locationnodes.rs_people_c sometimes
having an empty array. The return type into which
locationnodes.rs_people_c is returned is INTEGER[].

Assistance much appreciated.
Rory

function:
    CREATE OR REPLACE FUNCTION fn_matview_location_slots (                      
        
        week_start  DATE,     
    ) RETURNS setof matview_location_slots_info AS                              
        
    $$      
    DECLARE 
        resulter    matview_location_slots_info%ROWTYPE;                        
        
    BEGIN   
        FOR resulter IN 
            SELECT 
                rs_node               AS node,                                  
        
                rs_date               AS dater,
                ...
                COALESCE(rs_people_c, '{}'::INTEGER[]) AS people
            FROM
                locationnodes
            WHERE
                rs_date >= week_start
        LOOP
            RETURN NEXT resulter;
        END LOOP;
    END; $$ LANGUAGE plpgsql;

type:
    CREATE TYPE matview_location_slots_info AS (                                
        
            node              VARCHAR,
            dater             DATE,
            ...
            people            INTEGER[]
    );

data:
    select rs_people_c from locationnodes;
                           rs_people_c                     
    ---------------------------------------------
     {}
     {}
     {}
     {40}
     {28}
     {}
     {1}
     {}
     {36}
     {731}
     {32}
     {31}
     {66}
     {}
     {}
     {}
     {62}
     {540,72,69,53,37,42,201,65,560,51,58}
     {64}

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

Reply via email to