aboutsummaryrefslogtreecommitdiff
path: root/contrib/array
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/array')
-rw-r--r--contrib/array/Makefile13
-rw-r--r--contrib/array/array_iterator.c126
-rw-r--r--contrib/array/array_iterator.h30
-rw-r--r--contrib/array/array_iterator.sql.in76
4 files changed, 173 insertions, 72 deletions
diff --git a/contrib/array/Makefile b/contrib/array/Makefile
index 9459f9c9bc3..5607b4e5370 100644
--- a/contrib/array/Makefile
+++ b/contrib/array/Makefile
@@ -1,7 +1,8 @@
#-------------------------------------------------------------------------
#
-# Makefile--
-# Makefile for array iterator functions.
+# Makefile --
+#
+# Makefile for array iterator module.
#
#-------------------------------------------------------------------------
@@ -19,6 +20,8 @@ CFLAGS += $(INCLUDE_OPT) $(CFLAGS_SL)
MODNAME = array_iterator
+SQLDEFS = $(MODNAME).sql
+
MODULE = $(MODNAME)$(DLSUFFIX)
MODDIR = $(LIBDIR)/modules
@@ -29,12 +32,12 @@ all: module sql
module: $(MODULE)
-sql: $(MODNAME).sql
+sql: $(SQLDEFS)
-install: $(MODULE) $(MODDIR) $(SQLDIR)
+install: $(MODULE) $(SQLDEFS) $(MODDIR) $(SQLDIR)
cp -p $(MODULE) $(MODDIR)/
strip $(MODDIR)/$(MODULE)
- cp -p $(MODNAME).sql $(SQLDIR)/
+ cp -p $(SQLDEFS) $(SQLDIR)/
$(MODDIR):
mkdir -p $@
diff --git a/contrib/array/array_iterator.c b/contrib/array/array_iterator.c
index 1561c1b192b..27902e585f8 100644
--- a/contrib/array/array_iterator.c
+++ b/contrib/array/array_iterator.c
@@ -141,7 +141,7 @@ array_texteq(ArrayType *array, char *value)
{
return array_iterator((Oid) 25, /* text */
(Oid) 67, /* texteq */
- 0, /* logical or */
+ 0, /* logical or */
array, (Datum) value);
}
@@ -150,7 +150,7 @@ array_all_texteq(ArrayType *array, char *value)
{
return array_iterator((Oid) 25, /* text */
(Oid) 67, /* texteq */
- 1, /* logical and */
+ 1, /* logical and */
array, (Datum) value);
}
@@ -159,7 +159,7 @@ array_textregexeq(ArrayType *array, char *value)
{
return array_iterator((Oid) 25, /* text */
(Oid) 1254, /* textregexeq */
- 0, /* logical or */
+ 0, /* logical or */
array, (Datum) value);
}
@@ -168,48 +168,89 @@ array_all_textregexeq(ArrayType *array, char *value)
{
return array_iterator((Oid) 25, /* text */
(Oid) 1254, /* textregexeq */
- 1, /* logical and */
+ 1, /* logical and */
array, (Datum) value);
}
/*
- * Iterator functions for type _char16. Note that the regexp
+ * Iterator functions for type _varchar. Note that the regexp
* operators take the second argument of type text.
*/
int32
-array_char16eq(ArrayType *array, char *value)
+array_varchareq(ArrayType *array, char *value)
{
- return array_iterator((Oid) 20, /* char16 */
- (Oid) 1275, /* char16eq */
- 0, /* logical or */
+ return array_iterator((Oid) 20, /* varchar */
+ (Oid) 1070, /* varchareq */
+ 0, /* logical or */
array, (Datum) value);
}
int32
-array_all_char16eq(ArrayType *array, char *value)
+array_all_varchareq(ArrayType *array, char *value)
{
- return array_iterator((Oid) 20, /* char16 */
- (Oid) 1275, /* char16eq */
- 1, /* logical and */
+ return array_iterator((Oid) 20, /* varchar */
+ (Oid) 1070, /* varchareq */
+ 1, /* logical and */
array, (Datum) value);
}
int32
-array_char16regexeq(ArrayType *array, char *value)
+array_varcharregexeq(ArrayType *array, char *value)
{
- return array_iterator((Oid) 20, /* char16 */
- (Oid) 1288, /* char16regexeq */
- 0, /* logical or */
+ return array_iterator((Oid) 20, /* varchar */
+ (Oid) 1254, /* textregexeq */
+ 0, /* logical or */
+ array, (Datum) value);
+}
+
+int32
+array_all_varcharregexeq(ArrayType *array, char *value)
+{
+ return array_iterator((Oid) 20, /* varchar */
+ (Oid) 1254, /* textregexeq */
+ 1, /* logical and */
+ array, (Datum) value);
+}
+
+/*
+ * Iterator functions for type _bpchar. Note that the regexp
+ * operators take the second argument of type text.
+ */
+
+int32
+array_bpchareq(ArrayType *array, char *value)
+{
+ return array_iterator((Oid) 20, /* bpchar */
+ (Oid) 1048, /* bpchareq */
+ 0, /* logical or */
+ array, (Datum) value);
+}
+
+int32
+array_all_bpchareq(ArrayType *array, char *value)
+{
+ return array_iterator((Oid) 20, /* bpchar */
+ (Oid) 1048, /* bpchareq */
+ 1, /* logical and */
+ array, (Datum) value);
+}
+
+int32
+array_bpcharregexeq(ArrayType *array, char *value)
+{
+ return array_iterator((Oid) 20, /* bpchar */
+ (Oid) 1254, /* textregexeq */
+ 0, /* logical or */
array, (Datum) value);
}
int32
-array_all_char16regexeq(ArrayType *array, char *value)
+array_all_bpcharregexeq(ArrayType *array, char *value)
{
- return array_iterator((Oid) 20, /* char16 */
- (Oid) 1288, /* char16regexeq */
- 1, /* logical and */
+ return array_iterator((Oid) 20, /* bpchar */
+ (Oid) 1254, /* textregexeq */
+ 1, /* logical and */
array, (Datum) value);
}
@@ -222,7 +263,7 @@ array_int4eq(ArrayType *array, int4 value)
{
return array_iterator((Oid) 23, /* int4 */
(Oid) 65, /* int4eq */
- 0, /* logical or */
+ 0, /* logical or */
array, (Datum) value);
}
@@ -231,7 +272,7 @@ array_all_int4eq(ArrayType *array, int4 value)
{
return array_iterator((Oid) 23, /* int4 */
(Oid) 65, /* int4eq */
- 1, /* logical and */
+ 1, /* logical and */
array, (Datum) value);
}
@@ -240,7 +281,7 @@ array_int4ne(ArrayType *array, int4 value)
{
return array_iterator((Oid) 23, /* int4 */
(Oid) 144, /* int4ne */
- 0, /* logical or */
+ 0, /* logical or */
array, (Datum) value);
}
@@ -249,7 +290,7 @@ array_all_int4ne(ArrayType *array, int4 value)
{
return array_iterator((Oid) 23, /* int4 */
(Oid) 144, /* int4ne */
- 1, /* logical and */
+ 1, /* logical and */
array, (Datum) value);
}
@@ -258,7 +299,7 @@ array_int4gt(ArrayType *array, int4 value)
{
return array_iterator((Oid) 23, /* int4 */
(Oid) 147, /* int4gt */
- 0, /* logical or */
+ 0, /* logical or */
array, (Datum) value);
}
@@ -267,7 +308,7 @@ array_all_int4gt(ArrayType *array, int4 value)
{
return array_iterator((Oid) 23, /* int4 */
(Oid) 147, /* int4gt */
- 1, /* logical and */
+ 1, /* logical and */
array, (Datum) value);
}
@@ -276,7 +317,7 @@ array_int4ge(ArrayType *array, int4 value)
{
return array_iterator((Oid) 23, /* int4 */
(Oid) 150, /* int4ge */
- 0, /* logical or */
+ 0, /* logical or */
array, (Datum) value);
}
@@ -285,7 +326,7 @@ array_all_int4ge(ArrayType *array, int4 value)
{
return array_iterator((Oid) 23, /* int4 */
(Oid) 150, /* int4ge */
- 1, /* logical and */
+ 1, /* logical and */
array, (Datum) value);
}
@@ -294,7 +335,7 @@ array_int4lt(ArrayType *array, int4 value)
{
return array_iterator((Oid) 23, /* int4 */
(Oid) 66, /* int4lt */
- 0, /* logical or */
+ 0, /* logical or */
array, (Datum) value);
}
@@ -303,7 +344,7 @@ array_all_int4lt(ArrayType *array, int4 value)
{
return array_iterator((Oid) 23, /* int4 */
(Oid) 66, /* int4lt */
- 1, /* logical and */
+ 1, /* logical and */
array, (Datum) value);
}
@@ -312,7 +353,7 @@ array_int4le(ArrayType *array, int4 value)
{
return array_iterator((Oid) 23, /* int4 */
(Oid) 149, /* int4le */
- 0, /* logical or */
+ 0, /* logical or */
array, (Datum) value);
}
@@ -321,19 +362,18 @@ array_all_int4le(ArrayType *array, int4 value)
{
return array_iterator((Oid) 23, /* int4 */
(Oid) 149, /* int4le */
- 1, /* logical and */
+ 1, /* logical and */
array, (Datum) value);
}
/* new tobias gabele 1999 */
-
int32
array_oideq(ArrayType *array, Oid value)
{
return array_iterator((Oid) 26, /* oid */
(Oid) 184, /* oideq */
- 0, /* logical or */
+ 0, /* logical or */
array, (Datum) value);
}
@@ -342,14 +382,16 @@ array_all_oidne(ArrayType *array, Oid value)
{
return array_iterator((Oid) 26, /* int4 */
(Oid) 185, /* oidne */
- 1, /* logical and */
+ 1, /* logical and */
array, (Datum) value);
}
-
-
-
-
-
-
/* end of file */
+
+/*
+ * Local Variables:
+ * tab-width: 4
+ * c-indent-level: 4
+ * c-basic-offset: 4
+ * End:
+ */
diff --git a/contrib/array/array_iterator.h b/contrib/array/array_iterator.h
index 6e840884879..9a386abd2c7 100644
--- a/contrib/array/array_iterator.h
+++ b/contrib/array/array_iterator.h
@@ -2,15 +2,23 @@
#define ARRAY_ITERATOR_H
static int32 array_iterator(Oid elemtype, Oid proc, int and,
- ArrayType *array, Datum value);
+ ArrayType *array, Datum value);
+
int32 array_texteq(ArrayType *array, char *value);
int32 array_all_texteq(ArrayType *array, char *value);
int32 array_textregexeq(ArrayType *array, char *value);
int32 array_all_textregexeq(ArrayType *array, char *value);
-int32 array_char16eq(ArrayType *array, char *value);
-int32 array_all_char16eq(ArrayType *array, char *value);
-int32 array_char16regexeq(ArrayType *array, char *value);
-int32 array_all_char16regexeq(ArrayType *array, char *value);
+
+int32 array_varchareq(ArrayType *array, char *value);
+int32 array_all_varchareq(ArrayType *array, char *value);
+int32 array_varcharregexeq(ArrayType *array, char *value);
+int32 array_all_varcharregexeq(ArrayType *array, char *value);
+
+int32 array_bpchareq(ArrayType *array, char *value);
+int32 array_all_bpchareq(ArrayType *array, char *value);
+int32 array_bpcharregexeq(ArrayType *array, char *value);
+int32 array_all_bpcharregexeq(ArrayType *array, char *value);
+
int32 array_int4eq(ArrayType *array, int4 value);
int32 array_all_int4eq(ArrayType *array, int4 value);
int32 array_int4ne(ArrayType *array, int4 value);
@@ -23,7 +31,15 @@ int32 array_int4lt(ArrayType *array, int4 value);
int32 array_all_int4lt(ArrayType *array, int4 value);
int32 array_int4le(ArrayType *array, int4 value);
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_oideq(ArrayType *array, Oid value);
+int32 array_all_oidne(ArrayType *array, Oid value);
#endif
+
+/*
+ * Local Variables:
+ * tab-width: 4
+ * c-indent-level: 4
+ * c-basic-offset: 4
+ * End:
+ */
diff --git a/contrib/array/array_iterator.sql.in b/contrib/array/array_iterator.sql.in
index cc95c8aea7b..d4182b112e2 100644
--- a/contrib/array/array_iterator.sql.in
+++ b/contrib/array/array_iterator.sql.in
@@ -39,43 +39,84 @@ create operator **~ (
procedure=array_all_textregexeq);
--- define the array operators *=, **=, *~ and **~ for type _char16
+-- define the array operators *=, **=, *~ and **~ for type _varchar
--
-create function array_char16eq(_char16, char16) returns bool
+-- NOTE: "varchar" is also a reserved word and must be quoted.
+--
+create function array_varchareq(_varchar, varchar) returns bool
as 'MODULE_PATHNAME'
language 'c';
-create function array_all_char16eq(_char16, char16) returns bool
+create function array_all_varchareq(_varchar, varchar) returns bool
as 'MODULE_PATHNAME'
language 'c';
-create function array_char16regexeq(_char16, text) returns bool
+create function array_varcharregexeq(_varchar, varchar) returns bool
as 'MODULE_PATHNAME'
language 'c';
-create function array_all_char16regexeq(_char16, text) returns bool
+create function array_all_varcharregexeq(_varchar, varchar) returns bool
as 'MODULE_PATHNAME'
language 'c';
create operator *= (
- leftarg=_char16,
- rightarg=char16,
- procedure=array_char16eq);
+ leftarg=_varchar,
+ rightarg="varchar",
+ procedure=array_varchareq);
create operator **= (
- leftarg=_char16,
- rightarg=char16,
- procedure=array_all_char16eq);
+ leftarg=_varchar,
+ rightarg="varchar",
+ procedure=array_all_varchareq);
create operator *~ (
- leftarg=_char16,
- rightarg=text,
- procedure=array_char16regexeq);
+ leftarg=_varchar,
+ rightarg="varchar",
+ procedure=array_varcharregexeq);
create operator **~ (
- leftarg=_char16,
- rightarg=text,
- procedure=array_all_char16regexeq);
+ leftarg=_varchar,
+ rightarg="varchar",
+ procedure=array_all_varcharregexeq);
+
+
+-- define the array operators *=, **=, *~ and **~ for type _bpchar
+--
+create function array_bpchareq(_bpchar, bpchar) returns bool
+ as 'MODULE_PATHNAME'
+ language 'c';
+
+create function array_all_bpchareq(_bpchar, bpchar) returns bool
+ as 'MODULE_PATHNAME'
+ language 'c';
+
+create function array_bpcharregexeq(_bpchar, bpchar) returns bool
+ as 'MODULE_PATHNAME'
+ language 'c';
+
+create function array_all_bpcharregexeq(_bpchar, bpchar) returns bool
+ as 'MODULE_PATHNAME'
+ language 'c';
+
+create operator *= (
+ leftarg=_bpchar,
+ rightarg=bpchar,
+ procedure=array_bpchareq);
+
+create operator **= (
+ leftarg=_bpchar,
+ rightarg=bpchar,
+ procedure=array_all_bpchareq);
+
+create operator *~ (
+ leftarg=_bpchar,
+ rightarg=bpchar,
+ procedure=array_bpcharregexeq);
+
+create operator **~ (
+ leftarg=_bpchar,
+ rightarg=bpchar,
+ procedure=array_all_bpcharregexeq);
-- define the array operators *=, **=, *> and **> for type _int4
@@ -209,5 +250,4 @@ create operator **<> (
procedure=array_all_oidne);
-
-- end of file