Thread: Bitwise OR in a group statement

Bitwise OR in a group statement

From
"Greg Gazanian"
Date:
I was wondering if anyone happens to know whether there is an Aggregate function available in Postgres that can do an
ORon a column of the bit varying type. For example I would like to do something as follows: 

bitstring
*--------
1110
0100
1111


SELECT bitwise_or(bitstring) FROM table;

Resulting in:
1111

Any thoughts? Thanks.

- Greg Gazanian
Network Systems Analyst
Technology and Information Services
Arcadia Unified School District


Re: Bitwise OR in a group statement

From
"Florian G. Pflug"
Date:
Greg Gazanian wrote:
> I was wondering if anyone happens to know whether there is an Aggregate function available in Postgres that can do an
ORon a column of the bit varying type. For example I would like to do something as follows: 
>
> bitstring
> *--------
> 1110
> 0100
> 1111
>
> SELECT bitwise_or(bitstring) FROM table;
>
> Resulting in:
> 1111
There is no such function predefined, but you can easily define one
yourself.

create aggregate or_bit64(
   basetype=bit,
   sfunc=bitor,
   stype=bit,
   initcond=
     '0000000000000000000000000000000000000000000000000000000000000000'
) ;

I'm using this in production, and it works fine. I didn't find a way to
make this length-agnostic, so I defined this for all lenghts of
bitstrings the my app uses (32 and 64).

greetings, Florian Pflug