This patch adds support for inet[] arrays to the /contrib/array module.
authorBruce Momjian
Sun, 4 Aug 2002 04:25:02 +0000 (04:25 +0000)
committerBruce Momjian
Sun, 4 Aug 2002 04:25:02 +0000 (04:25 +0000)
Neil Conway

contrib/array/array_iterator.c
contrib/array/array_iterator.h
contrib/array/array_iterator.sql.in

index 8a2455b673be7f1691af176ff368b176bbc929e8..5616350b3a5626f736623b6323d025845ce40818 100644 (file)
@@ -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:
index 7889fdc0b2ac284f49caa40b8a702a8bc1fb4e40..f959f09c7c7a430f4958e1ea40fefcac84a1aa72 100644 (file)
@@ -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
 
 /*
index d4182b112e2bb0c80254f3887b64881929a962ca..806d010e7240d9d357a19ce90d455aa32b8c0675 100644 (file)
@@ -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);