diff options
Diffstat (limited to 'contrib/array')
-rw-r--r-- | contrib/array/Makefile | 13 | ||||
-rw-r--r-- | contrib/array/array_iterator.c | 126 | ||||
-rw-r--r-- | contrib/array/array_iterator.h | 30 | ||||
-rw-r--r-- | contrib/array/array_iterator.sql.in | 76 |
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 |