Casting problem

From: John Burski <John(dot)Burski(at)911ep(dot)com>
To: pgsql-novice(at)postgresql(dot)org
Subject: Casting problem
Date: 2001-11-05 19:34:04
Message-ID: 3BE6E9AC.90602@911ep.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

I'm running PostgreSQL 7.0.3 on a Red Hat 6.2 box and I've encountered a
bit of trouble with casting.

The table I'm dealing with is
Table "employee_tbl"
Attribute | Type | Modifier
-----------------+-------------+----------
emp_id | char(8) | not null
emp_last_name | varchar(20) | not null
emp_first_name | varchar(15) | not null
emp_middle_name | varchar(15) |
emp_gender | char(1) | not null
emp_eye_color | varchar(6) | not null
emp_hair_color | varchar(10) | not null
emp_clearance | char(2) | not null
emp_job_title | varchar(20) |
emp_status | char(1) | not null
emp_doh | date | not null
emp_dob | date | not null
emp_id_expires | date | not null
Index: employee_tbl_pkey
Constraint: ((emp_gender = 'M'::bpchar) OR (emp_gender = 'F'::bpchar))

The table currently contains only two rows, one each for emp_id 1118 and
1119. I can execute a "SELECT * FROM employee_tbl WHERE emp_id =
'1119'" and it works flawlessly. However, when I attempt to execute a
"DELETE FROM employee_tbl WHERE emp_id = '1119'" I get the following
error message:

clocker=# DELETE FROM employee_tbl WHERE emp_id = '1119';
ERROR: Unable to identify an operator '=' for types 'varchar' and 'bpchar'
You will have to retype this query using an explicit cast

When I attempt to cast the literal as either a 'varchar' or a 'bpchar'
type I get the same error message.

clocker=# DELETE FROM employee_tbl WHERE emp_id = '1119'::bpchar;
ERROR: Unable to identify an operator '=' for types 'varchar' and 'bpchar'
You will have to retype this query using an explicit cast

As a test case, I created a table as follows:

johnb=# create table test2 (
johnb(# mykey char(8) primary key,
johnb(# mydata text
johnb(# );

I inserted data into the table

johnb=# insert into test2 values ('1119', 'Some data' );
INSERT 100432 1
johnb=# insert into test2 values ('1118', 'Some more data' );
INSERT 100433 1

Then I deleted a row

johnb=# delete from test2 where mykey = '1119';
DELETE 1

Which worked flawlessly. Why does the technique work in one database
table and not the other? Could my "clocker" database be corrupt?

Thanks in advance for the help.

--
John Burski
I.T. Manager and Systems Administration
911 Emergency Products, Inc.
25 Sixth Avenue North
Saint Cloud, MN 56303
John(dot)Burski(at)911ep(dot)com

800-863-6911, extension 221
FAX: 800-863-2991
www.911ep.com

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message Josh Berkus 2001-11-05 20:29:39 Re: Installing 7.1.3 is missing libssl.0.1
Previous Message Julian Gollop 2001-11-05 19:02:35 Installing 7.1.3 is missing libssl.0.1