Se as instruções que você está tentando "eval" sempre retornarem o mesmo tipo de dados, você pode escrever uma função eval() que use o EXECUTE mencionado por Grzegorz.
create or replace function eval(expression text) returns integer
as
$body$
declare
result integer;
begin
execute expression into result;
return result;
end;
$body$
language plpgsql
Então você poderia fazer algo como
SELECT eval('select 41') + 1;
Mas essa abordagem não funcionará se suas instruções dinâmicas retornarem algo diferente para cada expressão que você deseja avaliar.
Lembre-se também de que isso abre um enorme risco de segurança ao executar instruções arbitrárias. Se isso é um problema depende do seu ambiente. Se isso for usado apenas em sessões SQL interativas, não será um problema.