Re: Implicit/Explicit casting of the unknown type - Mailing list pgsql-sql
From | Stephen Jackson |
---|---|
Subject | Re: Implicit/Explicit casting of the unknown type |
Date | |
Msg-id | 3ACA60AA.A77E79F5@panting-deer.org.uk Whole thread Raw |
In response to | Implicit/Explicit casting of the unknown type (Stephen Jackson <Stephen.Jackson@panting-deer.org.uk>) |
Responses |
Re: Implicit/Explicit casting of the unknown type
|
List | pgsql-sql |
Hi, Apologies for re-posting - this problem is giving me a bit of a headache. Basically, my problem is that in a number of (to me surprising) contexts an explicit cast from a string literal to some character data type is required by PostgreSQL, where such casts are not required by other rdbms with which I am more familiar. (Examples below.) Is there a rule of thumb I can use to tell when such a cast is required? I hope someone can help. Regards, Stephen Jackson Home: Stephen.Jackson@panting-deer.org.uk www.panting-deer.org.uk Work: Stephen.Jackson@looksystems.co.uk www.looksystems.co.uk On Mon, 26 Mar 2001 21:03:55 +0100, Stephen Jackson wrote: > > Hi, > > I am new to this list. I have browsed the list archives and tried a > search, but haven't found anything about my problem. > > I am porting several applications to PostgreSQL and have come across a > number of instances where a string literal does not work without an > explicit cast to some character based datatype. Two examples are given > below: one where the string literal is in the column list, and one where > it is in a WHERE clause. > > Are there bugs in the area of determining a type for the unknown type? > Or is explicit casting of string literals to a known type generally > required by PostgreSQL? > > TIA, > > Stephen Jackson > Home: Stephen.Jackson@panting-deer.org.uk www.panting-deer.org.uk > Work: Stephen.Jackson@looksystems.co.uk www.looksystems.co.uk > > [begin examples] > version > --------------------------------------------------------------------- > PostgreSQL 7.0.3 on i686-pc-linux-gnu, compiled by gcc egcs-2.91.66 > (1 row) > > DROP TABLE strange > DROP > CREATE TABLE strange ( record_id integer ) > CREATE > INSERT INTO strange ( record_id ) VALUES ( 10 ) > INSERT 5174249 1 > SELECT DISTINCT record_id, 123 > FROM strange WHERE record_id < 100 > record_id | ?column? > -----------+---------- > 10 | 123 > (1 row) > > SELECT DISTINCT record_id, 'Hello' > FROM strange WHERE record_id < 100 > ERROR: Unable to identify an ordering operator '<' for type 'unknown' > Use an explicit ordering operator or modify the query > SELECT record_id, 'Hello' > FROM strange WHERE record_id < 100 > record_id | ?column? > -----------+---------- > 10 | Hello > (1 row) > > SELECT COUNT(*) FROM strange > WHERE 'TR' || 'UE' = 'TRUE' > count > ------- > 1 > (1 row) > > SELECT COUNT(*) FROM strange > WHERE 'TRUE' = 'TRUE' > ERROR: Unable to identify an operator '=' for types 'unknown' and > 'unknown' > You will have to retype this query using an explicit cast > > [end examples] >