CREATE OR REPLACE FUNCTION get_last_message( _stream_name varchar ) RETURNS SETOF message AS $$ DECLARE command text; BEGIN command := ' SELECT id::varchar, stream_name::varchar, type::varchar, position::bigint, global_position::bigint, data::varchar, metadata::varchar, time::timestamp FROM messages WHERE stream_name = $1 ORDER BY position DESC LIMIT 1'; -- RAISE NOTICE '%', command; RETURN QUERY EXECUTE command USING _stream_name; END; $$ LANGUAGE plpgsql VOLATILE;