Skip to content

Commit ce3d087

Browse files
committed
This patch adds support for inet[] arrays to the /contrib/array module.
Neil Conway
1 parent 0b15c25 commit ce3d087

File tree

3 files changed

+102
-28
lines changed

3 files changed

+102
-28
lines changed

contrib/array/array_iterator.c

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,41 @@ array_all_oidne(ArrayType *array, Oid value)
361361
array, (Datum) value);
362362
}
363363

364-
/* end of file */
364+
int32
365+
array_ineteq(ArrayType *array, Oid value)
366+
{
367+
return array_iterator((Oid) 869, /* inet */
368+
(Oid) 920, /* network_eq */
369+
0, /* logical or */
370+
array, (Datum) value);
371+
}
372+
373+
int32
374+
array_all_ineteq(ArrayType *array, Oid value)
375+
{
376+
return array_iterator((Oid) 869, /* inet */
377+
(Oid) 920, /* network_eq */
378+
1, /* logical and */
379+
array, (Datum) value);
380+
}
381+
382+
int32
383+
array_inetne(ArrayType *array, Oid value)
384+
{
385+
return array_iterator((Oid) 869, /* inet */
386+
(Oid) 925, /* network_ne */
387+
0, /* logical and */
388+
array, (Datum) value);
389+
}
390+
391+
int32
392+
array_all_inetne(ArrayType *array, Oid value)
393+
{
394+
return array_iterator((Oid) 869, /* inet */
395+
(Oid) 925, /* network_ne */
396+
1, /* logical and */
397+
array, (Datum) value);
398+
}
365399

366400
/*
367401
* Local Variables:

contrib/array/array_iterator.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ int32 array_all_int4le(ArrayType *array, int4 value);
3434

3535
int32 array_oideq(ArrayType *array, Oid value);
3636
int32 array_all_oidne(ArrayType *array, Oid value);
37+
38+
int32 array_ineteq(ArrayType *array, Oid value);
39+
int32 array_all_ineteq(ArrayType *array, Oid value);
40+
int32 array_inetne(ArrayType *array, Oid value);
41+
int32 array_all_inetne(ArrayType *array, Oid value);
3742
#endif
3843

3944
/*

contrib/array/array_iterator.sql.in

Lines changed: 62 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22

33
-- define the array operators *=, **=, *~ and **~ for type _text
44
--
5-
create function array_texteq(_text, text) returns bool
5+
create or replace function array_texteq(_text, text) returns bool
66
as 'MODULE_PATHNAME'
77
language 'c';
88

9-
create function array_all_texteq(_text, text) returns bool
9+
create or replace function array_all_texteq(_text, text) returns bool
1010
as 'MODULE_PATHNAME'
1111
language 'c';
1212

13-
create function array_textregexeq(_text, text) returns bool
13+
create or replace function array_textregexeq(_text, text) returns bool
1414
as 'MODULE_PATHNAME'
1515
language 'c';
1616

17-
create function array_all_textregexeq(_text, text) returns bool
17+
create or replace function array_all_textregexeq(_text, text) returns bool
1818
as 'MODULE_PATHNAME'
1919
language 'c';
2020

@@ -43,19 +43,19 @@ create operator **~ (
4343
--
4444
-- NOTE: "varchar" is also a reserved word and must be quoted.
4545
--
46-
create function array_varchareq(_varchar, varchar) returns bool
46+
create or replace function array_varchareq(_varchar, varchar) returns bool
4747
as 'MODULE_PATHNAME'
4848
language 'c';
4949

50-
create function array_all_varchareq(_varchar, varchar) returns bool
50+
create or replace function array_all_varchareq(_varchar, varchar) returns bool
5151
as 'MODULE_PATHNAME'
5252
language 'c';
5353

54-
create function array_varcharregexeq(_varchar, varchar) returns bool
54+
create or replace function array_varcharregexeq(_varchar, varchar) returns bool
5555
as 'MODULE_PATHNAME'
5656
language 'c';
5757

58-
create function array_all_varcharregexeq(_varchar, varchar) returns bool
58+
create or replace function array_all_varcharregexeq(_varchar, varchar) returns bool
5959
as 'MODULE_PATHNAME'
6060
language 'c';
6161

@@ -82,19 +82,19 @@ create operator **~ (
8282

8383
-- define the array operators *=, **=, *~ and **~ for type _bpchar
8484
--
85-
create function array_bpchareq(_bpchar, bpchar) returns bool
85+
create or replace function array_bpchareq(_bpchar, bpchar) returns bool
8686
as 'MODULE_PATHNAME'
8787
language 'c';
8888

89-
create function array_all_bpchareq(_bpchar, bpchar) returns bool
89+
create or replace function array_all_bpchareq(_bpchar, bpchar) returns bool
9090
as 'MODULE_PATHNAME'
9191
language 'c';
9292

93-
create function array_bpcharregexeq(_bpchar, bpchar) returns bool
93+
create or replace function array_bpcharregexeq(_bpchar, bpchar) returns bool
9494
as 'MODULE_PATHNAME'
9595
language 'c';
9696

97-
create function array_all_bpcharregexeq(_bpchar, bpchar) returns bool
97+
create or replace function array_all_bpcharregexeq(_bpchar, bpchar) returns bool
9898
as 'MODULE_PATHNAME'
9999
language 'c';
100100

@@ -121,51 +121,51 @@ create operator **~ (
121121

122122
-- define the array operators *=, **=, *> and **> for type _int4
123123
--
124-
create function array_int4eq(_int4, int4) returns bool
124+
create or replace function array_int4eq(_int4, int4) returns bool
125125
as 'MODULE_PATHNAME'
126126
language 'c';
127127

128-
create function array_all_int4eq(_int4, int4) returns bool
128+
create or replace function array_all_int4eq(_int4, int4) returns bool
129129
as 'MODULE_PATHNAME'
130130
language 'c';
131131

132-
create function array_int4ne(_int4, int4) returns bool
132+
create or replace function array_int4ne(_int4, int4) returns bool
133133
as 'MODULE_PATHNAME'
134134
language 'c';
135135

136-
create function array_all_int4ne(_int4, int4) returns bool
136+
create or replace function array_all_int4ne(_int4, int4) returns bool
137137
as 'MODULE_PATHNAME'
138138
language 'c';
139139

140-
create function array_int4gt(_int4, int4) returns bool
140+
create or replace function array_int4gt(_int4, int4) returns bool
141141
as 'MODULE_PATHNAME'
142142
language 'c';
143143

144-
create function array_all_int4gt(_int4, int4) returns bool
144+
create or replace function array_all_int4gt(_int4, int4) returns bool
145145
as 'MODULE_PATHNAME'
146146
language 'c';
147147

148-
create function array_int4ge(_int4, int4) returns bool
148+
create or replace function array_int4ge(_int4, int4) returns bool
149149
as 'MODULE_PATHNAME'
150150
language 'c';
151151

152-
create function array_all_int4ge(_int4, int4) returns bool
152+
create or replace function array_all_int4ge(_int4, int4) returns bool
153153
as 'MODULE_PATHNAME'
154154
language 'c';
155155

156-
create function array_int4lt(_int4, int4) returns bool
156+
create or replace function array_int4lt(_int4, int4) returns bool
157157
as 'MODULE_PATHNAME'
158158
language 'c';
159159

160-
create function array_all_int4lt(_int4, int4) returns bool
160+
create or replace function array_all_int4lt(_int4, int4) returns bool
161161
as 'MODULE_PATHNAME'
162162
language 'c';
163163

164-
create function array_int4le(_int4, int4) returns bool
164+
create or replace function array_int4le(_int4, int4) returns bool
165165
as 'MODULE_PATHNAME'
166166
language 'c';
167167

168-
create function array_all_int4le(_int4, int4) returns bool
168+
create or replace function array_all_int4le(_int4, int4) returns bool
169169
as 'MODULE_PATHNAME'
170170
language 'c';
171171

@@ -231,11 +231,11 @@ create operator **<= (
231231

232232
-- define the array operators *=, **<> for type _oid (added tobias 1. 1999)
233233
--
234-
create function array_oideq(_oid, oid) returns bool
234+
create or replace function array_oideq(_oid, oid) returns bool
235235
as 'MODULE_PATHNAME'
236236
language 'c';
237237

238-
create function array_all_oidne(_oid, oid) returns bool
238+
create or replace function array_all_oidne(_oid, oid) returns bool
239239
as 'MODULE_PATHNAME'
240240
language 'c';
241241

@@ -249,5 +249,40 @@ create operator **<> (
249249
rightarg=oid,
250250
procedure=array_all_oidne);
251251

252+
-- define the array operators *=, **=, *<>, **<> for type _inet
252253

253-
-- end of file
254+
create or replace function array_ineteq(_inet, inet) returns bool
255+
as 'MODULE_PATHNAME'
256+
language 'c';
257+
258+
create or replace function array_all_ineteq(_inet, inet) returns bool
259+
as 'MODULE_PATHNAME'
260+
language 'c';
261+
262+
create or replace function array_inetne(_inet, inet) returns bool
263+
as 'MODULE_PATHNAME'
264+
language 'c';
265+
266+
create or replace function array_all_inetne(_inet, inet) returns bool
267+
as 'MODULE_PATHNAME'
268+
language 'c';
269+
270+
create operator *= (
271+
leftarg=_inet,
272+
rightarg=inet,
273+
procedure=array_ineteq);
274+
275+
create operator **= (
276+
leftarg=_inet,
277+
rightarg=inet,
278+
procedure=array_all_ineteq);
279+
280+
create operator *<> (
281+
leftarg=_inet,
282+
rightarg=inet,
283+
procedure=array_inetne);
284+
285+
create operator **<> (
286+
leftarg=_inet,
287+
rightarg=inet,
288+
procedure=array_all_inetne);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy