FROM products,
(values ('red widget'::text)) consts(target)
WHERE similarity(target, item_name) > 0.25
ORDER BY target <<-> item_name
PG 9.5 and up will flatten out cases like this to be exactly what you
wrote out longhand.
Does it matter if the values _expression_ is embedded in a CTE? I find the construct:
WITH constants AS ( VALUES (,,) )
SELECT * FROM tbl CROSS JOIN constants
nice as it keeps the constants at the top of the query string. I presume pure style differences between using multiple from items and an explicit cross join.
David J.