varchar function

jose' soares <sferac@bo.nettuno.it>

From: "jose' soares" <sferac@bo.nettuno.it>
To: pgsql-hackers@postgresql.org
Date: 1999-02-17T12:00:50Z
Lists: pgsql-hackers
Hi,

I'm trying to create a varchar(float8) to cast float to varchar but I
can't create it.
I can create bpchar(foat8) and text(float8) and it works well but
varchar(float8).

EXAPLE:

create table test(f float, n name);
CREATE
insert into test values(1.23, current_user);
INSERT 192042 1
select cast(f as text) from test;
text
-------------------------
2000-01-01 01:00:01.23+01   <----this is wrong then I create
text(float8)
(1 row)

select cast(f as char) from test;
ERROR:  No such function 'bpchar' with the specified attributes
select cast(f as varchar) from test;
ERROR:  No such function 'varchar' with the specified attributes
create function text(float8) returns text as
'begin
        return $1;
end;' language 'plpgsql';
CREATE
create function bpchar(float8) returns bpchar as
'begin
        return $1;
end;' language 'plpgsql';
CREATE
create function varchar(float8) returns varchar as
'begin
        return $1;
end;' language 'plpgsql';
ERROR:  parser: parse error at or near "varchar"  <---there's a parser
error.
select cast(f as text) from test;
text
----
1.23    <------and now it works
(1 row)

select cast(f as char) from test;
bpchar
------
  1.23
(1 row)

----I see there are some varchar built-in functions but I can't use them
also...

\df varchar
result |function       |arguments     |description
-------+---------------+--------------+---------------------
bool   |varchareq      |varchar varcha|equal
bool   |varcharge      |varchar varcha|greater-than-or-equal
bool   |varchargt      |varchar varcha|greater-than
bool   |varcharle      |varchar varcha|less-than-or-equal
bool   |varcharlt      |varchar varcha|less-than
bool   |varcharne      |varchar varcha|not equal
int4   |varcharcmp     |varchar varcha|less-equal-greater
int4   |varcharlen     |varchar       |character length
int4   |varcharoctetlen|varchar       |octet length
varchar|varchar        |name          |convert
varchar|varchar        |varchar int4  |
(11 rows)

select varchar(n) from test;
ERROR:  parser: parse error at or near "n"


--Any ideas ?

-Jose'-