Unnest array por un nivel

Quiero tomar una variedad den dimensiones y conjunto de retorno que contiene filas de matrices den-1 dimensiones. Por ejemplo, tome la matrizARRAY[[1,2,3], [4,5,6], [7,8,9]] y devolver un conjunto{1,2,3}, {4,5,6}, {7,8,9}. Usar unnest devuelve el conjunto1,2,3,4,5,6,7,8,9.

ntenté tomar la función desagradable de PostgreSQL 8.4, que parece que haría lo que estoy buscando:

CREATE OR REPLACE FUNCTION tstng.unnest2(anyarray)
    RETURNS SETOF anyelement
    LANGUAGE plpgsql
    IMMUTABLE
    AS $
    BEGIN
            RETURN QUERY SELECT $1[i]
                FROM generate_series(array_lower($1,1), array_upper($1,1)) i;
        END;
    $;

Sin embargo,SELECT tstng.unnest2(ARRAY[[1,2,3], [4,5,6], [7,8,9]]); devuelve el conjunto, , (es decir: 3 filas nulas).

También he encontrado queSELECT (ARRAY[[1,2,3], [4,5,6], [7,8,9]])[0]; devuelve nulo, que creo que es la raíz de mi problema.

Respuestas a la pregunta(3)

Su respuesta a la pregunta