Re: Implicit/Explicit casting of the unknown type

From: Stephen Jackson <Stephen(dot)Jackson(at)panting-deer(dot)org(dot)uk>
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: Implicit/Explicit casting of the unknown type
Date: 2001-04-03 23:45:46
Message-ID: 3ACA60AA.A77E79F5@panting-deer.org.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(dot)Jackson(at)panting-deer(dot)org(dot)uk www.panting-deer.org.uk
Work: Stephen(dot)Jackson(at)looksystems(dot)co(dot)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(dot)Jackson(at)panting-deer(dot)org(dot)uk www.panting-deer.org.uk
> Work: Stephen(dot)Jackson(at)looksystems(dot)co(dot)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]
>

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Josh Berkus 2001-04-04 03:34:25 Re: Implicit/Explicit casting of the unknown type
Previous Message Tom Lane 2001-04-03 23:29:38 Re: pg_dumpall and password access