"Matthew Bellew" <postgres(at)bellew(dot)net> writes:
> In the script below, I'd expect all four queries to return 10 rows
> (1,2,3,4,5,10,20,30,40,50). However, function bystr() returns two rows
> (1,10). Clearly, in this one case the query processor is casting the column
> to the parameter type, rather than the other way around. The optimizer
> should always preferentially cast the parameter to the type of the column.
I see no bug here. You are confused about the difference between an
unknown literal ('100') and a value that is actually declared to be of
type text. See
http://www.postgresql.org/docs/8.1/static/typeconv.html
regards, tom lane