mirror of
https://github.com/postgres/postgres.git
synced 2025-06-11 20:28:21 +03:00
Hi,
I have updated my contrib code for version 6.5. In the attachment you will find the directories array, datetime, miscutil, string, tools and userlocks which replace the corresponding directories under contrib. In contrib/tools you will find some developement scripts which I use while hacking the sources. I hope they will be useful for some other people. I have also added a contrib/Makefile which tries to compile and install all the contribs. Unfortunately many of them don't have a Makefile or don't compile cleanly. -- Massimo Dal Zotto
This commit is contained in:
@ -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 $@
|
||||
|
@ -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_char16regexeq(ArrayType *array, char *value)
|
||||
array_all_varcharregexeq(ArrayType *array, char *value)
|
||||
{
|
||||
return array_iterator((Oid) 20, /* char16 */
|
||||
(Oid) 1288, /* char16regexeq */
|
||||
1, /* logical and */
|
||||
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_bpcharregexeq(ArrayType *array, char *value)
|
||||
{
|
||||
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:
|
||||
*/
|
||||
|
@ -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:
|
||||
*/
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user