han.holl@xxxxxxxxxxxxxxxxxxxx writes: > select expensive_function(table) from table > where expensive_function(table) is not null; > Is there a way to avoid that expensive_function is evaluated twice (if it's > not null) ? You can do something like this: select f from (select expensive_function(table) as f from table offset 0) ss where f is not null; The "offset 0" bit is a hack that keeps the planner from flattening the sub-select into the upper query, which would result in two copies of the function expression, which is what you want to avoid. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to majordomo@xxxxxxxxxxxxxx so that your message can get through to the mailing list cleanly