ERROR: function unnest(integer[]) does not exist in postgresql SELECT UNNEST(ARRAY[1,2,3,4]) ERROR: function unnest(integer[]) does not exist in postgresql. CREATE OR REPLACE FUNCTION unnest(anyarray) RETURNS SETOF anyelement AS $BODY$ SELECT $1[i] FROM generate_series(array_lower($1,1), array_upper($1,1)) i; $BODY$ LANGUAGE sql IMMUTABLE; SELECT unnest('{1,2,3,4}'::int[]) -- works SELECT unnest('{{1,2},{3,4},{5,6}}'::int[]) -- fails! (returns all NULLs) CREATE OR REPLACE FUNCTION unnest2(anyarray) -- for 2-dimensional arrays RETURNS SETOF anyelement AS $BODY$ SELECT $1[i][j] FROM ( SELECT i, generate_series(array_lower($1,2), array_upper($1,2)) j FROM ( SELECT generate_series(array_lower($1,1), array_upper($1,1)) i ) x ) y; $BODY$ LANGUAGE sql IMMUTABLE; SELECT unnest2('{{1,2},{3,4},{5,6}}'::int[]) -- works!