Thread: bitwise again

bitwise again

From
Alexander Lohse
Date:
Hi,

I am having serious troubles to move my DBs from MySQL to Postgres.

In MySQL I use following bitwise operation on an INT field:

$q = "select id from my_tbl where aid & 2";

In Postgres I tried the same, but I found no working solution.

My basic questions:

Is it better(or even possible) to use bitwise operator on an int4
field or shall I prefer the varbit?
(In my logic I would prefer int4!)

Using the above as in MySQL, I get an ERROR:
WHERE clause must return type bool, not type int4

Can anyone point me to a right doc or kickstart myself?

Thanx,

Alex



--
___________________________
Alexander Lohse
Human Touch Medienproduktion GmbH
Am See 1
17440 Klein Jasedow

Tel: (038374) 75211
Fax: (038374) 75223
eMail: al@humantouch.de
http://www.humantouch.de

Re: bitwise again

From
Peter Eisentraut
Date:
Alexander Lohse writes:

> In MySQL I use following bitwise operation on an INT field:
>
> $q = "select id from my_tbl where aid & 2";
>
> In Postgres I tried the same, but I found no working solution.

Upgrade to 7.1.

> Is it better(or even possible) to use bitwise operator on an int4
> field or shall I prefer the varbit?

If you plan on bit fields larger than 32 bits and/or you need string-like
functions (substring, position), then BIT or BIT VARYING are for you.  If
you plan to use numeric operators (+, sqrt), then use an integer type.

> Using the above as in MySQL, I get an ERROR:
> WHERE clause must return type bool, not type int4

Indeed.  Maybe you meant something like (aid & 2) <> 0.

--
Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/


Re: bitwise again

From
Philip Hallstrom
Date:
As someone else pointed out you can upgrade to 7.1.  Or you can add your
own operators/functions.

I've included the C source and SQL create script.  You'll need to do this
as the postgres superuser.  And you'll probably need to edit the SQL
script and adjust the path of the .so file.  The .c file has what I use
for compilation (you'll need to tweak that as well).

The only gotcha is that you can't remove the NOT operator (it's a bug in
7.0.3) using the DROP OPERATOR statement.

-philip

On Mon, 2 Apr 2001, Alexander Lohse wrote:

> Hi,
>
> I am having serious troubles to move my DBs from MySQL to Postgres.
>
> In MySQL I use following bitwise operation on an INT field:
>
> $q = "select id from my_tbl where aid & 2";
>
> In Postgres I tried the same, but I found no working solution.
>
> My basic questions:
>
> Is it better(or even possible) to use bitwise operator on an int4
> field or shall I prefer the varbit?
> (In my logic I would prefer int4!)
>
> Using the above as in MySQL, I get an ERROR:
> WHERE clause must return type bool, not type int4
>
> Can anyone point me to a right doc or kickstart myself?
>
> Thanx,
>
> Alex
>
>
>
> --
> ___________________________
> Alexander Lohse
> Human Touch Medienproduktion GmbH
> Am See 1
> 17440 Klein Jasedow
>
> Tel: (038374) 75211
> Fax: (038374) 75223
> eMail: al@humantouch.de
> http://www.humantouch.de
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://www.postgresql.org/search.mpl
>

Attachment

Re: bitwise again

From
Alexander Lohse
Date:
>As someone else pointed out you can upgrade to 7.1.  Or you can add your
>own operators/functions.

I got my install from CVS, just a week ago!

But I'll see how far I come with these suggestions.

Thanx,

Alex
--
___________________________
Alexander Lohse
Human Touch Medienproduktion GmbH
Am See 1
17440 Klein Jasedow

Tel: (038374) 75211
Fax: (038374) 75223
eMail: al@humantouch.de
http://www.humantouch.de