From ce3d08701058bc046c0126114488746f3fd21dc7 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Sun, 4 Aug 2002 04:25:02 +0000 Subject: [PATCH] This patch adds support for inet[] arrays to the /contrib/array module. Neil Conway --- contrib/array/array_iterator.c | 36 +++++++++++- contrib/array/array_iterator.h | 5 ++ contrib/array/array_iterator.sql.in | 89 ++++++++++++++++++++--------- 3 files changed, 102 insertions(+), 28 deletions(-) diff --git a/contrib/array/array_iterator.c b/contrib/array/array_iterator.c index 8a2455b673..5616350b3a 100644 --- a/contrib/array/array_iterator.c +++ b/contrib/array/array_iterator.c @@ -361,7 +361,41 @@ array_all_oidne(ArrayType *array, Oid value) array, (Datum) value); } -/* end of file */ +int32 +array_ineteq(ArrayType *array, Oid value) +{ + return array_iterator((Oid) 869, /* inet */ + (Oid) 920, /* network_eq */ + 0, /* logical or */ + array, (Datum) value); +} + +int32 +array_all_ineteq(ArrayType *array, Oid value) +{ + return array_iterator((Oid) 869, /* inet */ + (Oid) 920, /* network_eq */ + 1, /* logical and */ + array, (Datum) value); +} + +int32 +array_inetne(ArrayType *array, Oid value) +{ + return array_iterator((Oid) 869, /* inet */ + (Oid) 925, /* network_ne */ + 0, /* logical and */ + array, (Datum) value); +} + +int32 +array_all_inetne(ArrayType *array, Oid value) +{ + return array_iterator((Oid) 869, /* inet */ + (Oid) 925, /* network_ne */ + 1, /* logical and */ + array, (Datum) value); +} /* * Local Variables: diff --git a/contrib/array/array_iterator.h b/contrib/array/array_iterator.h index 7889fdc0b2..f959f09c7c 100644 --- a/contrib/array/array_iterator.h +++ b/contrib/array/array_iterator.h @@ -34,6 +34,11 @@ int32 array_all_int4le(ArrayType *array, int4 value); int32 array_oideq(ArrayType *array, Oid value); int32 array_all_oidne(ArrayType *array, Oid value); + +int32 array_ineteq(ArrayType *array, Oid value); +int32 array_all_ineteq(ArrayType *array, Oid value); +int32 array_inetne(ArrayType *array, Oid value); +int32 array_all_inetne(ArrayType *array, Oid value); #endif /* diff --git a/contrib/array/array_iterator.sql.in b/contrib/array/array_iterator.sql.in index d4182b112e..806d010e72 100644 --- a/contrib/array/array_iterator.sql.in +++ b/contrib/array/array_iterator.sql.in @@ -2,19 +2,19 @@ -- define the array operators *=, **=, *~ and **~ for type _text -- -create function array_texteq(_text, text) returns bool +create or replace function array_texteq(_text, text) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_all_texteq(_text, text) returns bool +create or replace function array_all_texteq(_text, text) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_textregexeq(_text, text) returns bool +create or replace function array_textregexeq(_text, text) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_all_textregexeq(_text, text) returns bool +create or replace function array_all_textregexeq(_text, text) returns bool as 'MODULE_PATHNAME' language 'c'; @@ -43,19 +43,19 @@ create operator **~ ( -- -- NOTE: "varchar" is also a reserved word and must be quoted. -- -create function array_varchareq(_varchar, varchar) returns bool +create or replace function array_varchareq(_varchar, varchar) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_all_varchareq(_varchar, varchar) returns bool +create or replace function array_all_varchareq(_varchar, varchar) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_varcharregexeq(_varchar, varchar) returns bool +create or replace function array_varcharregexeq(_varchar, varchar) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_all_varcharregexeq(_varchar, varchar) returns bool +create or replace function array_all_varcharregexeq(_varchar, varchar) returns bool as 'MODULE_PATHNAME' language 'c'; @@ -82,19 +82,19 @@ create operator **~ ( -- define the array operators *=, **=, *~ and **~ for type _bpchar -- -create function array_bpchareq(_bpchar, bpchar) returns bool +create or replace function array_bpchareq(_bpchar, bpchar) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_all_bpchareq(_bpchar, bpchar) returns bool +create or replace function array_all_bpchareq(_bpchar, bpchar) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_bpcharregexeq(_bpchar, bpchar) returns bool +create or replace function array_bpcharregexeq(_bpchar, bpchar) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_all_bpcharregexeq(_bpchar, bpchar) returns bool +create or replace function array_all_bpcharregexeq(_bpchar, bpchar) returns bool as 'MODULE_PATHNAME' language 'c'; @@ -121,51 +121,51 @@ create operator **~ ( -- define the array operators *=, **=, *> and **> for type _int4 -- -create function array_int4eq(_int4, int4) returns bool +create or replace function array_int4eq(_int4, int4) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_all_int4eq(_int4, int4) returns bool +create or replace function array_all_int4eq(_int4, int4) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_int4ne(_int4, int4) returns bool +create or replace function array_int4ne(_int4, int4) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_all_int4ne(_int4, int4) returns bool +create or replace function array_all_int4ne(_int4, int4) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_int4gt(_int4, int4) returns bool +create or replace function array_int4gt(_int4, int4) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_all_int4gt(_int4, int4) returns bool +create or replace function array_all_int4gt(_int4, int4) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_int4ge(_int4, int4) returns bool +create or replace function array_int4ge(_int4, int4) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_all_int4ge(_int4, int4) returns bool +create or replace function array_all_int4ge(_int4, int4) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_int4lt(_int4, int4) returns bool +create or replace function array_int4lt(_int4, int4) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_all_int4lt(_int4, int4) returns bool +create or replace function array_all_int4lt(_int4, int4) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_int4le(_int4, int4) returns bool +create or replace function array_int4le(_int4, int4) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_all_int4le(_int4, int4) returns bool +create or replace function array_all_int4le(_int4, int4) returns bool as 'MODULE_PATHNAME' language 'c'; @@ -231,11 +231,11 @@ create operator **<= ( -- define the array operators *=, **<> for type _oid (added tobias 1. 1999) -- -create function array_oideq(_oid, oid) returns bool +create or replace function array_oideq(_oid, oid) returns bool as 'MODULE_PATHNAME' language 'c'; -create function array_all_oidne(_oid, oid) returns bool +create or replace function array_all_oidne(_oid, oid) returns bool as 'MODULE_PATHNAME' language 'c'; @@ -249,5 +249,40 @@ create operator **<> ( rightarg=oid, procedure=array_all_oidne); +-- define the array operators *=, **=, *<>, **<> for type _inet --- end of file +create or replace function array_ineteq(_inet, inet) returns bool + as 'MODULE_PATHNAME' + language 'c'; + +create or replace function array_all_ineteq(_inet, inet) returns bool + as 'MODULE_PATHNAME' + language 'c'; + +create or replace function array_inetne(_inet, inet) returns bool + as 'MODULE_PATHNAME' + language 'c'; + +create or replace function array_all_inetne(_inet, inet) returns bool + as 'MODULE_PATHNAME' + language 'c'; + +create operator *= ( + leftarg=_inet, + rightarg=inet, + procedure=array_ineteq); + +create operator **= ( + leftarg=_inet, + rightarg=inet, + procedure=array_all_ineteq); + +create operator *<> ( + leftarg=_inet, + rightarg=inet, + procedure=array_inetne); + +create operator **<> ( + leftarg=_inet, + rightarg=inet, + procedure=array_all_inetne);