Thread: bitwise again
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
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/
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
>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