mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Please apply patches for contrib/ltree.
ltree_73.patch.gz - for 7.3 : Fix ~ operation bug: eg '1.1.1' ~ '*.1' ltree_74.patch.gz - for current CVS Fix ~ operation bug: eg '1.1.1' ~ '*.1' Add ? operation Optimize index storage Last change needs drop/create all ltree indexes, so only for 7.4 Teodor Sigaev
This commit is contained in:
@ -13,6 +13,8 @@ PG_FUNCTION_INFO_V1(_ltree_risparent);
|
||||
PG_FUNCTION_INFO_V1(_ltree_r_risparent);
|
||||
PG_FUNCTION_INFO_V1(_ltq_regex);
|
||||
PG_FUNCTION_INFO_V1(_ltq_rregex);
|
||||
PG_FUNCTION_INFO_V1(_lt_q_regex);
|
||||
PG_FUNCTION_INFO_V1(_lt_q_rregex);
|
||||
PG_FUNCTION_INFO_V1(_ltxtq_exec);
|
||||
PG_FUNCTION_INFO_V1(_ltxtq_rexec);
|
||||
|
||||
@ -126,6 +128,42 @@ _ltq_rregex(PG_FUNCTION_ARGS)
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
_lt_q_regex(PG_FUNCTION_ARGS)
|
||||
{
|
||||
ArrayType *_tree = PG_GETARG_ARRAYTYPE_P(0);
|
||||
ArrayType *_query = PG_GETARG_ARRAYTYPE_P(1);
|
||||
lquery *query = (lquery *) ARR_DATA_PTR(_query);
|
||||
bool res = false;
|
||||
int num = ArrayGetNItems(ARR_NDIM(_query), ARR_DIMS(_query));
|
||||
|
||||
if (ARR_NDIM(_query) != 1)
|
||||
elog(ERROR, "Dimension of array != 1");
|
||||
|
||||
while (num > 0) {
|
||||
if ( array_iterator(_tree, ltq_regex, (void*)query, NULL) ) {
|
||||
res = true;
|
||||
break;
|
||||
}
|
||||
num--;
|
||||
query = (lquery*)NEXTVAL(query);
|
||||
}
|
||||
|
||||
PG_FREE_IF_COPY(_tree, 0);
|
||||
PG_FREE_IF_COPY(_query, 1);
|
||||
PG_RETURN_BOOL(res);
|
||||
}
|
||||
|
||||
Datum
|
||||
_lt_q_rregex(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_DATUM(DirectFunctionCall2(_lt_q_regex,
|
||||
PG_GETARG_DATUM(1),
|
||||
PG_GETARG_DATUM(0)
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
_ltxtq_exec(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
Reference in New Issue
Block a user