DROP FUNCTION IF EXISTS pg_catalog.bit_count(numeric) CASCADE;
CREATE OR REPLACE FUNCTION pg_catalog.bit_count (numeric) RETURNS int8 LANGUAGE C STABLE STRICT as '$libdir/dolphin', 'bit_count_numeric';
DROP FUNCTION IF EXISTS pg_catalog.bit_count(text) CASCADE;
CREATE OR REPLACE FUNCTION pg_catalog.bit_count (text) RETURNS int8 LANGUAGE C STABLE STRICT as '$libdir/dolphin', 'bit_count_text';
DROP FUNCTION IF EXISTS pg_catalog.bit_count_bit(text) CASCADE;
CREATE OR REPLACE FUNCTION pg_catalog.bit_count_bit (text) RETURNS int8 LANGUAGE C STABLE STRICT as '$libdir/dolphin', 'bit_count_bit';
DROP FUNCTION IF EXISTS pg_catalog.bit_count(bit) CASCADE;
CREATE OR REPLACE FUNCTION pg_catalog.bit_count (bit) RETURNS int8 AS $$ SELECT pg_catalog.bit_count_bit(cast($1 as text)) $$ LANGUAGE SQL;
DROP FUNCTION IF EXISTS pg_catalog.varbit_bit_xor_transfn(varbit, varbit) CASCADE;
CREATE FUNCTION pg_catalog.varbit_bit_xor_transfn (
t1 varbit ,t2 varbit
) RETURNS varbit AS
$$
BEGIN
IF t1 is null THEN
RETURN t2;
ELSEIF t2 is null THEN
RETURN t1;
ELSE
RETURN (SELECT bitxor(t1, t2));
END IF;
END;
$$
LANGUAGE plpgsql;
DROP FUNCTION IF EXISTS pg_catalog.varbit_bit_xor_finalfn(varbit) CASCADE;
CREATE FUNCTION pg_catalog.varbit_bit_xor_finalfn (
t varbit
) RETURNS int8 AS
$$
BEGIN
IF t is null THEN
RETURN 0;
ELSE
RETURN (SELECT int8(t));
END IF;
END;
$$
LANGUAGE plpgsql;
drop aggregate if exists pg_catalog.bit_xor(varbit);
create aggregate pg_catalog.bit_xor(varbit) (SFUNC=varbit_bit_xor_transfn, finalfunc = varbit_bit_xor_finalfn ,STYPE= varbit);