>I've seen this as well be a performance issue, in particular with partitioned tables.
>Out of habit I now write functions that always cache the value of the function in
>a variable and use the variable in the actual query to avoid this particular "gotcha".
subquery may be used to cache constants:
SELECT a_date
FROM test
WHERE a_date=(SELECT current_date);
"Seq Scan on test1 (cost=0.01..10.76 rows=5 width=4)"
" Filter: (a_date = $0)"
" InitPlan 1 (returns $0)"
" -> Result (cost=0.00..0.01 rows=1 width=0)"
------------
pasman