/usr/share/postgresql/10/extension/pgcmp--3.0.sql is in postgresql-comparator 2.3.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | --
-- $Id: pgcmp--3.0.sql 1554 2015-08-17 07:22:40Z coelho $
--
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION pgcmp" to load this file. \quit
--
-- XOR AGGREGATE
--
-- default behavior for strict functions used: NULLs are ignored
DROP AGGREGATE IF EXISTS XOR(bit);
CREATE AGGREGATE XOR(
BASETYPE = BIT,
SFUNC = bitxor,
STYPE = BIT
);
DROP AGGREGATE IF EXISTS XOR(INT2);
CREATE AGGREGATE XOR(
BASETYPE = INT2,
SFUNC = int2xor,
STYPE = INT2
);
DROP AGGREGATE IF EXISTS XOR(INT4);
CREATE AGGREGATE XOR(
BASETYPE = INT4,
SFUNC = int4xor,
STYPE = INT4
);
DROP AGGREGATE IF EXISTS XOR(INT8);
CREATE AGGREGATE XOR(
BASETYPE = INT8,
SFUNC = int8xor,
STYPE = INT8
);
--
-- CASTS
--
-- LOAD 'MODULE_PATHNAME';
CREATE OR REPLACE FUNCTION varbit(BYTEA, INT, BOOL)
RETURNS VARBIT
LANGUAGE C
IMMUTABLE STRICT
AS 'MODULE_PATHNAME', 'varbitfrombytea';
-- bit and varbit are binary compatible...
CREATE OR REPLACE FUNCTION tobit(BYTEA, INT, BOOL)
RETURNS BIT
LANGUAGE C
IMMUTABLE STRICT
AS 'MODULE_PATHNAME', 'varbitfrombytea';
CREATE OR REPLACE FUNCTION bytea(VARBIT, INT, BOOL)
RETURNS BYTEA
LANGUAGE C
IMMUTABLE STRICT
AS 'MODULE_PATHNAME', 'varbittobytea';
CREATE OR REPLACE FUNCTION bytea(BIT, INT, BOOL)
RETURNS BYTEA
LANGUAGE C
IMMUTABLE STRICT
AS 'MODULE_PATHNAME', 'varbittobytea';
CREATE OR REPLACE FUNCTION varbit2int2(VARBIT, INT, BOOL)
RETURNS INT2
LANGUAGE C
IMMUTABLE STRICT
AS 'MODULE_PATHNAME', 'varbittoint2';
CREATE OR REPLACE FUNCTION bit2int2(BIT, INT, BOOL)
RETURNS INT2
LANGUAGE C
IMMUTABLE STRICT
AS 'MODULE_PATHNAME', 'varbittoint2';
-- no data loss, very similar types
-- AS IMPLICIT would be ok?
DROP CAST IF EXISTS (BYTEA AS VARBIT);
CREATE CAST (BYTEA AS VARBIT)
WITH FUNCTION varbit(BYTEA, INT, BOOL);
DROP CAST IF EXISTS (BYTEA AS BIT);
CREATE CAST (BYTEA AS BIT)
WITH FUNCTION tobit(BYTEA, INT, BOOL);
-- data loss: the bit length is rounded up
-- AS ASSIGNMENT?
DROP CAST IF EXISTS (VARBIT AS BYTEA);
CREATE CAST (VARBIT AS BYTEA)
WITH FUNCTION bytea(VARBIT, INT, BOOL);
DROP CAST IF EXISTS (BIT AS BYTEA);
CREATE CAST (BIT AS BYTEA)
WITH FUNCTION bytea(BIT, INT, BOOL);
DROP CAST IF EXISTS (VARBIT AS INT2);
CREATE CAST (VARBIT AS INT2)
WITH FUNCTION varbit2int2(VARBIT, INT, BOOL);
DROP CAST IF EXISTS (BIT AS INT2);
CREATE CAST (BIT AS INT2)
WITH FUNCTION bit2int2(BIT, INT, BOOL);
--
-- CHECKSUMS
--
LOAD 'MODULE_PATHNAME';
CREATE OR REPLACE FUNCTION cksum2(TEXT)
RETURNS INT2
LANGUAGE C
CALLED ON NULL INPUT
AS 'MODULE_PATHNAME', 'text_checksum2';
CREATE OR REPLACE FUNCTION cksum4(TEXT)
RETURNS INT4
LANGUAGE C
CALLED ON NULL INPUT
AS 'MODULE_PATHNAME', 'text_checksum4';
CREATE OR REPLACE FUNCTION cksum8(TEXT)
RETURNS INT8
LANGUAGE C
CALLED ON NULL INPUT
AS 'MODULE_PATHNAME', 'text_checksum8';
CREATE OR REPLACE FUNCTION fnv2(TEXT)
RETURNS INT2
LANGUAGE C
CALLED ON NULL INPUT
AS 'MODULE_PATHNAME', 'text_fnv2';
CREATE OR REPLACE FUNCTION fnv4(TEXT)
RETURNS INT4
LANGUAGE C
CALLED ON NULL INPUT
AS 'MODULE_PATHNAME', 'text_fnv4';
CREATE OR REPLACE FUNCTION fnv8(TEXT)
RETURNS INT8
LANGUAGE C
CALLED ON NULL INPUT
AS 'MODULE_PATHNAME', 'text_fnv8';
|