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: [EMAIL PROTECTED]  www.panting-deer.org.uk
Work: [EMAIL PROTECTED]    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]

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to