Thank you for that helpful information. I thought I was going mad! It would never have occurred to me to write a join which relied on an implicit cast between int and string. However, every language that I have ever used will implicitly convert an integer 1 to a smallint (or short) 1 when required to do so. How can such a cast be called "surprising behaviour", or produce "misleading results", to quote the first article?
--- On Fri, 9/4/10, Greg Smith <g...@2ndquadrant.com> wrote: From: Greg Smith <g...@2ndquadrant.com> Subject: Re: [GENERAL] When is an explicit cast necessary? To: "Alan Millington" <admilling...@yahoo.co.uk> Cc: "Postgres general mailing list" <pgsql-general@postgresql.org> Date: Friday, 9 April, 2010, 15:06 Alan Millington wrote: > > As far as I remember, when I was using Postgres 8.1.4 that worked, but under > Postgres 8.4.1 it results in the errors "Returned type integer does not match > expected type smallint" and "Returned type unknown does not match expected > type character". > There was a major breaking change to how casting is handled in 8.3. Some good reading about what happened: http://www.depesz.com/index.php/2008/05/05/error-operator-does-not-exist-integer-text-how-to-fix-it/ http://petereisentraut.blogspot.com/2008/03/readding-implicit-casts-in-postgresql.html -- Greg Smith 2ndQuadrant US Baltimore, MD PostgreSQL Training, Services and Support g...@2ndquadrant.com www.2ndquadrant.us