Retornar tabela dinâmica com colunas desconhecidas da função PL / pgSQL

Preciso criar uma função que verifique em uma determinada tabela se oinfowindow campo existe. Se existir, a função deve retornarselect * from table mas, caso contrário, ele deve retornar um adicionalid campo:

CREATE OR REPLACE FUNCTION getxo_ocx_cincu_preparar_infowindow(
                                              guretabla character varying)
  RETURNS TABLE AS
$BODY$ 
DECLARE
    tabla ALIAS FOR $1;

BEGIN

IF  EXISTS (SELECT 1
   FROM   pg_namespace n
   JOIN   pg_class     c ON c.relnamespace = n.oid
   JOIN   pg_attribute a ON a.attrelid = c.oid 
   WHERE  n.nspname = current_schema()  -- default to current schema
   AND    c.relname = tabla
   AND    a.attname = 'infowindow'
   AND    NOT a.attisdropped)
THEN
    RETURN QUERY EXECUTE 'SELECT * from ' ||tabla ;
ELSE
    RETURN QUERY EXECUTE 'SELECT *, ID:' || id::text ||' as infowindow
                                   from ' ||tabla ;
END IF;

END;
$BODY$
  LANGUAGE plpgsql VOLATILE;

Se eu usarRETURNS SETOF RECORDS, quando faço a seleção da função, preciso especificar as colunas que não conheço. E se eu usarRETURNS TABLE Também preciso especificar os campos, para não saber como fazê-lo.

questionAnswers(1)

yourAnswerToTheQuestion