The following documentation comment has been logged on the website: Page: https://www.postgresql.org/docs/10/static/sql-prepare.html Description:
Background can be found on the bugs list (pgsql-bug #15289). It was explained that when a prepared statement parameter needs to have its type inferred then, should the parameter be used more than once, only the first use is considered. (The example in that report is that the type of $1 can be inferred from "($1 = col) or ($1 is null)" but not from "($1 is null) or ($1 = col)".) The documentation as it stands says only that the parameter's type is inferred from the context in which it is used. The "first use only" proviso is not mentioned (hence "context" isn't so broad as to consist of all of the expressions in which the parameter appears).