Are int4/int8 ops defined? - Mailing list pgsql-sql

From Min Qiu
Subject Are int4/int8 ops defined?
Date
Msg-id QQguuj13589.199906230419@nocserve0.uu.net
Whole thread Raw
List pgsql-sql
Hi,

I'm new to postgresql and learning writing the trigger.
Included below was one of the execise I did.  It kept
producing an error message that suggested the operater '-'
was undefined for int8/int4.  Since both int8 and int4 
are the basic types, I believed I might miss something.

Appology for the long post and thanks for any advise,

Min

 DROP trigger t_diff on tb_cnt32; DROP function f_diff(); DROP TABLE tb_cnt32;  create table tb_cnt32 (t int8, s int8,
vint8); insert into tb_cnt32 values (0, 0, 0);  -- -- diff function -- create function f_diff() returns opaque as '
declare  prev   record; begin   select into prev * from tb_cnt32 where t=(select max(t) from tb_cnt32);   -- can not do
 -- select into prev * from tb_cnt32 where t=max(t);   --                                          ^^^^^   if not found
then    raise exception ''Empty table tb_cnt32???'';   end if;    prev.v=new.v-prev.v;   update tb_cnt32 set v=prev.v
wheret=prev.t;
 
   return new; end; ' language 'plpgsql';
 -- -- t_diff trigger -- create trigger t_diff     before insert on tb_cnt32     for each row     execute procedure
f_diff(); insert into tb_cnt32 values (1000, 5, 10); ERROR:  There is no operator '-$' for types 'int8' and 'int4'
Youwill either have to retype this query using an explicit cast,     or you will have to define the operator using
CREATEOPERATOR
 

Following the hint of the error message, I trid casting prev.v::int8,
new.v::int4 and prev.v::int4.  But the results were the same.

I'm using v6.5 on Linux 2.0.35 with gcc version egcs-2.91.66.
psql \df listed:
...
int8     |int8div            |int8 int8     |divide
int8     |int8larger         |int8 int8     |larger of two
int8     |int8mi             |int8 int8     |subtraction
int8     |int8mul            |int8 int8     |multiply
int8     |int8pl             |int8 int8     |addition
int8     |int8smaller        |int8 int8     |smaller of two
int8     |int8um             |int8          |unary minus
...


pgsql-sql by date:

Previous
From: "Deva Vejay"
Date:
Subject: Max () of an empty table... I need it to return 0 any ideas?
Next
From: Haris Susanto
Date:
Subject: insert on insert/update