Thread: Probs with int2 in functions
I'm using PostgreSQL v6.3.2. It appears that the function command doesn't like the type "int2" as a parm in a call. For example, zedadmin=> \i zz.sql create table test2( trk_id int2 not null, trk_nm varchar(30) not null, trk_comp varchar(30)); CREATE create function insert_test2(int2,varchar,varchar) returns int4 as 'insert into test2 values($1,$2,$3); select 1 as return_val;' language 'sql'; CREATE EOF The objects are successfully created, but when I come to insert data via the function there is the following error. zedadmin=> select insert_test2(1,'My name','My comment'); ERROR: function insert_test2(int4, unknown, unknown) does not exist If one changes the int2 to an int4 in the table and function, the function is happy to insert the data into the table. Any ideas why this is so, or is it a bug? Cheers...Gordon ~~~~~~~~~~~~~~ 4ZzZ Brisbane's First Community FM Station ~~~~~~~~~~~~~~ The Demo Show - Supporting Australian Unsigned Artists Mon nights 6-7pm (0800-0900UTC) on 4ZzZ 102.1 FM http://www.4zzzfm.org.au/welcome.html (RA feed) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Gordon Clarke wrote: > > I'm using PostgreSQL v6.3.2. > > It appears that the function command doesn't like the type "int2" as a > parm in a call. For example, > > zedadmin=> \i zz.sql > create table test2( > trk_id int2 not null, > trk_nm varchar(30) not null, > trk_comp varchar(30)); > CREATE > > create function insert_test2(int2,varchar,varchar) > returns int4 as > 'insert into test2 > values($1,$2,$3); > select 1 as return_val;' > language 'sql'; > CREATE > EOF > > The objects are successfully created, but when I come to insert data via > the function there is the following error. > > zedadmin=> select insert_test2(1,'My name','My comment'); > ERROR: function insert_test2(int4, unknown, unknown) does not exist > > If one changes the int2 to an int4 in the table and function, the function > is happy to insert the data into the table. > > Any ideas why this is so, or is it a bug? > It works on my v6.4: select insert_test2(1,'My name','My comment'); insert_test2 ------------ 1 (1 row) select * from test2; trk_id|trk_nm |trk_comp ------+-------+---------- 1|My name|My comment 1|My name|My comment (2 rows) Any way try to cast values as: select insert_test2(1::int2,'My name'::varchar,'My comment'::varchar); -Jose'-
On Tue, 29 Dec 1998, Jose' Soares wrote: > > The objects are successfully created, but when I come to insert data via > > the function there is the following error. > > > > zedadmin=> select insert_test2(1,'My name','My comment'); > > ERROR: function insert_test2(int4, unknown, unknown) does not exist > > > > If one changes the int2 to an int4 in the table and function, the function > > is happy to insert the data into the table. > > > > Any ideas why this is so, or is it a bug? > > > > It works on my v6.4: > > select insert_test2(1,'My name','My comment'); > insert_test2 > ------------ > 1 > (1 row) So it appear that it is a bug in 6.3.2! > Any way try to cast values as: > select insert_test2(1::int2,'My name'::varchar,'My comment'::varchar); I'd prefer not to do that. Also, since it isn't necessary for the int4 case then it shouldn't be for the int2 case and this suggests to me that it is a bug. Thanks for your suggestions and help. Cheers...Gordon ~~~~~~~~~~~~~~ 4ZzZ Brisbane's First Community FM Station ~~~~~~~~~~~~~~ The Demo Show - Supporting Australian Unsigned Artists Mon nights 6-7pm (0800-0900UTC) on 4ZzZ 102.1 FM http://www.4zzzfm.org.au/welcome.html (RA feed) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~