conversion problems with domains

Started by Andreas Pflugalmost 23 years ago2 messages
#1Andreas Pflug
Andreas.Pflug@web.de

PostgreSQL 7.3.2

CREATE DOMAIN testdom AS int4;
CREATE TABLE testtab(testcol testdom);
INSERT INTO testtab VALUES (1);
INSERT INTO testtab VALUES (2);
VACUUM ANALYZE testtab;

SELECT * FROM testtab WHERE testcol > 1;

The select will give
"ERROR: convert_numeric_to_scalar: unsupported type 3381436"

If no VACUUM ANALYZE is performed (no entry in pg_stats), the select
will work ok.
The select will also succeed, if testcol is compared to something
different from 1.

Defining a cast
CREATE CAST(testdom as int4) WITHOUT FUNCTION AS IMPLICIT
doesn't help.

If I change the datatype

UPDATE pg_attribute
SET atttypid=(select oid from pg_type where typname = 'int4')
WHERE atttypid=(select oid from pg_type where typname = 'testdom')
AND attname='testcol'

the select will work as expected.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andreas Pflug (#1)
Re: conversion problems with domains

Andreas Pflug <Andreas.Pflug@web.de> writes:

PostgreSQL 7.3.2
CREATE DOMAIN testdom AS int4;
CREATE TABLE testtab(testcol testdom);
INSERT INTO testtab VALUES (1);
INSERT INTO testtab VALUES (2);
VACUUM ANALYZE testtab;

SELECT * FROM testtab WHERE testcol > 1;

I've applied a patch to fix this.

regards, tom lane