> You need to recast the clause as something like
>
> WHERE posted >= (CURRENT_TIMESTAMP - '5 minutes'::TIMESPAN)
>
> Then you still have the problem of persuading Postgres that it should
> treat the right side of this as a constant and not something to
> re-evaluate at each row. In 7.0 and later it's possible to do that
> with creative use of a user-defined function marked "iscachable"
> (for details see the archives for the last time this question came up,
> a few months back).
That did the trick, thanks!
Just for reference:
CREATE FUNCTION time_machine ( TIMESPAN )
RETURNS TIMESTAMP
AS 'SELECT CURRENT_TIMESTAMP - $1'
LANGUAGE 'sql'
WITH (iscachable);
seems to work. Perhaps it's more complicated than that, though?
-itai