Обсуждение: function bit(integer)

Поиск
Список
Период
Сортировка

function bit(integer)

От
Samer Abukhait
Дата:
whats the story of the function bit?
was it out there some previous versions and got removed lately??

My 8.0.2 PG hasn't this function, if i found this function any where
in previous code, shall i replace it with INT::bit(32) ??

Re: function bit(integer)

От
Michael Fuhr
Дата:
On Sun, May 15, 2005 at 01:30:05PM +0200, Samer Abukhait wrote:
>
> whats the story of the function bit?
> was it out there some previous versions and got removed lately??
>
> My 8.0.2 PG hasn't this function, if i found this function any where
> in previous code, shall i replace it with INT::bit(32) ??

I don't see the bit() function in the 8.0.3 documentation, so you
might want to stick with documented functionality.  In any case,
it looks like the signature has changed.  Here's what 8.0.3 has:

test=> \df bit
                      List of functions
   Schema   | Name | Result data type |  Argument data types
------------+------+------------------+-----------------------
 pg_catalog | bit  | bit              | bigint, integer
 pg_catalog | bit  | bit              | bit, integer, boolean
 pg_catalog | bit  | bit              | integer, integer
(3 rows)

Here's what 7.4.8 has:

test=> \df bit
                      List of functions
   Schema   | Name | Result data type |  Argument data types
------------+------+------------------+-----------------------
 pg_catalog | bit  | bit              | bigint
 pg_catalog | bit  | bit              | bit, integer, boolean
 pg_catalog | bit  | bit              | integer
(3 rows)

See also the 8.0 Release Notes to see how casting to bit(n) has
changed.

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

Re: function bit(integer)

От
Tom Lane
Дата:
Michael Fuhr <mike@fuhr.org> writes:
> On Sun, May 15, 2005 at 01:30:05PM +0200, Samer Abukhait wrote:
>> whats the story of the function bit?

> I don't see the bit() function in the 8.0.3 documentation, so you
> might want to stick with documented functionality.

bit(n) is a type name, not a function call, and always has been AFAIR.
The functions Michael lists are intended to be invoked via casts, not
directly as functions.

What is it you're trying to do exactly?

            regards, tom lane

Re: function bit(integer)

От
Samer Abukhait
Дата:
I have some code that uses this "type name" and the 8.0.3 is not recognizing it

-- Executing query:
select "bit"(1);

ERROR:  function bit(integer) does not exist
HINT:  No function matches the given name and argument types. You may
need to add explicit type casts.

Re: function bit(integer)

От
Tom Lane
Дата:
Samer Abukhait <abukhait@gmail.com> writes:
> select "bit"(1);
> ERROR:  function bit(integer) does not exist

Try
    select 1::bit(32);
or if you prefer
    select cast(1 as bit(32));

What you have above is essentially a direct invocation of the int-to-bit
cast function; which you can do if you like, but it's deprecated for
precisely the reason that we don't promise it'll remain stable.

            regards, tom lane