This file is indexed.

/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';