If you think that smallints are more bother than they are worth, perhaps you should remove support for smallints completely. Then people would know where they stood. (Or you could make smallint a synonym for int.) The other half of my problem was having to cast the literal 'R' to char(1) explicitly. I know that string literals can be used to represent all sorts of datatypes, but that is no reason to disallow interpreting them as strings. Or would an implicit cast have worked if I had omitted the length specifier?
--- On Tue, 13/4/10, Tom Lane <t...@sss.pgh.pa.us> wrote: From: Tom Lane <t...@sss.pgh.pa.us> Subject: Re: [GENERAL] When is an explicit cast necessary? To: "Martijn van Oosterhout" <klep...@svana.org> Cc: "Alan Millington" <admilling...@yahoo.co.uk>, "Alban Hertroys" <dal...@solfertje.student.utwente.nl>, "Greg Smith" <g...@2ndquadrant.com>, "Postgres general mailing list" <pgsql-general@postgresql.org> Date: Tuesday, 13 April, 2010, 20:16 Martijn van Oosterhout <klep...@svana.org> writes: > The question is: does the column really need to be smallint. Yeah. Usually, declaring a function's argument as int rather than smallint is the easiest fix. We have looked into this in the past, and concluded that the negative aspects of allowing integer constants to implicitly cast to smallint parameters would outweigh the positives. As an example, such simple expressions as "2 + 2" would start to fail because it'd be unclear whether int or smallint addition is meant. (And the point isn't academic, since for example it would affect the overflow threshold.) regards, tom lane