aboutsummaryrefslogtreecommitdiff
path: root/contrib/ltree
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ltree')
-rw-r--r--contrib/ltree/_ltree_gist.c7
-rw-r--r--contrib/ltree/ltree.sql.in26
-rw-r--r--contrib/ltree/ltree_gist.c11
-rw-r--r--contrib/ltree/uninstall_ltree.sql6
4 files changed, 30 insertions, 20 deletions
diff --git a/contrib/ltree/_ltree_gist.c b/contrib/ltree/_ltree_gist.c
index 34ec2552ca4..1c9b6b03eaa 100644
--- a/contrib/ltree/_ltree_gist.c
+++ b/contrib/ltree/_ltree_gist.c
@@ -554,10 +554,15 @@ _ltree_consistent(PG_FUNCTION_ARGS)
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
char *query = (char *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(1)));
- ltree_gist *key = (ltree_gist *) DatumGetPointer(entry->key);
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
+ /* Oid subtype = PG_GETARG_OID(3); */
+ bool *recheck = (bool *) PG_GETARG_POINTER(4);
+ ltree_gist *key = (ltree_gist *) DatumGetPointer(entry->key);
bool res = false;
+ /* All cases served by this function are inexact */
+ *recheck = true;
+
switch (strategy)
{
case 10:
diff --git a/contrib/ltree/ltree.sql.in b/contrib/ltree/ltree.sql.in
index 1d7c288fc74..4d378823ca0 100644
--- a/contrib/ltree/ltree.sql.in
+++ b/contrib/ltree/ltree.sql.in
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/contrib/ltree/ltree.sql.in,v 1.16 2007/11/13 04:24:28 momjian Exp $ */
+/* $PostgreSQL: pgsql/contrib/ltree/ltree.sql.in,v 1.17 2008/04/14 17:05:32 tgl Exp $ */
-- Adjust this setting to control where the objects get created.
SET search_path = public;
@@ -496,7 +496,7 @@ CREATE TYPE ltree_gist (
);
-CREATE OR REPLACE FUNCTION ltree_consistent(internal,internal,int2)
+CREATE OR REPLACE FUNCTION ltree_consistent(internal,internal,int2,oid,internal)
RETURNS bool as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE;
CREATE OR REPLACE FUNCTION ltree_compress(internal)
@@ -532,7 +532,7 @@ CREATE OPERATOR CLASS gist_ltree_ops
OPERATOR 15 @ (ltxtquery, ltree) ,
OPERATOR 16 ? (ltree, _lquery) ,
OPERATOR 17 ? (_lquery, ltree) ,
- FUNCTION 1 ltree_consistent (internal, internal, int2),
+ FUNCTION 1 ltree_consistent (internal, internal, int2, oid, internal),
FUNCTION 2 ltree_union (internal, internal),
FUNCTION 3 ltree_compress (internal),
FUNCTION 4 ltree_decompress (internal),
@@ -822,7 +822,7 @@ CREATE OPERATOR ?@ (
);
--GiST support for ltree[]
-CREATE OR REPLACE FUNCTION _ltree_consistent(internal,internal,int2)
+CREATE OR REPLACE FUNCTION _ltree_consistent(internal,internal,int2,oid,internal)
RETURNS bool
AS 'MODULE_PATHNAME'
LANGUAGE C IMMUTABLE;
@@ -854,15 +854,15 @@ LANGUAGE C IMMUTABLE;
CREATE OPERATOR CLASS gist__ltree_ops
DEFAULT FOR TYPE _ltree USING gist AS
- OPERATOR 10 <@ (_ltree, ltree) RECHECK ,
- OPERATOR 11 @> (ltree, _ltree) RECHECK ,
- OPERATOR 12 ~ (_ltree, lquery) RECHECK ,
- OPERATOR 13 ~ (lquery, _ltree) RECHECK ,
- OPERATOR 14 @ (_ltree, ltxtquery) RECHECK ,
- OPERATOR 15 @ (ltxtquery, _ltree) RECHECK ,
- OPERATOR 16 ? (_ltree, _lquery) RECHECK ,
- OPERATOR 17 ? (_lquery, _ltree) RECHECK ,
- FUNCTION 1 _ltree_consistent (internal, internal, int2),
+ OPERATOR 10 <@ (_ltree, ltree),
+ OPERATOR 11 @> (ltree, _ltree),
+ OPERATOR 12 ~ (_ltree, lquery),
+ OPERATOR 13 ~ (lquery, _ltree),
+ OPERATOR 14 @ (_ltree, ltxtquery),
+ OPERATOR 15 @ (ltxtquery, _ltree),
+ OPERATOR 16 ? (_ltree, _lquery),
+ OPERATOR 17 ? (_lquery, _ltree),
+ FUNCTION 1 _ltree_consistent (internal, internal, int2, oid, internal),
FUNCTION 2 _ltree_union (internal, internal),
FUNCTION 3 _ltree_compress (internal),
FUNCTION 4 ltree_decompress (internal),
diff --git a/contrib/ltree/ltree_gist.c b/contrib/ltree/ltree_gist.c
index dea0b9c3863..17c44b93aac 100644
--- a/contrib/ltree/ltree_gist.c
+++ b/contrib/ltree/ltree_gist.c
@@ -1,7 +1,7 @@
/*
* GiST support for ltree
* Teodor Sigaev <teodor@stack.net>
- * $PostgreSQL: pgsql/contrib/ltree/ltree_gist.c,v 1.22 2007/11/16 01:12:24 momjian Exp $
+ * $PostgreSQL: pgsql/contrib/ltree/ltree_gist.c,v 1.23 2008/04/14 17:05:32 tgl Exp $
*/
#include "ltree.h"
@@ -624,11 +624,16 @@ Datum
ltree_consistent(PG_FUNCTION_ARGS)
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
- void *query = NULL;
- ltree_gist *key = (ltree_gist *) DatumGetPointer(entry->key);
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
+ /* Oid subtype = PG_GETARG_OID(3); */
+ bool *recheck = (bool *) PG_GETARG_POINTER(4);
+ ltree_gist *key = (ltree_gist *) DatumGetPointer(entry->key);
+ void *query = NULL;
bool res = false;
+ /* All cases served by this function are exact */
+ *recheck = false;
+
switch (strategy)
{
case BTLessStrategyNumber:
diff --git a/contrib/ltree/uninstall_ltree.sql b/contrib/ltree/uninstall_ltree.sql
index 4d976839a4a..acd07df1e8a 100644
--- a/contrib/ltree/uninstall_ltree.sql
+++ b/contrib/ltree/uninstall_ltree.sql
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/contrib/ltree/uninstall_ltree.sql,v 1.5 2007/11/13 04:24:28 momjian Exp $ */
+/* $PostgreSQL: pgsql/contrib/ltree/uninstall_ltree.sql,v 1.6 2008/04/14 17:05:32 tgl Exp $ */
-- Adjust this setting to control where the objects get dropped.
SET search_path = public;
@@ -15,7 +15,7 @@ DROP FUNCTION _ltree_penalty(internal,internal,internal);
DROP FUNCTION _ltree_compress(internal);
-DROP FUNCTION _ltree_consistent(internal,internal,int2);
+DROP FUNCTION _ltree_consistent(internal,internal,int2,oid,internal);
DROP OPERATOR ?@ (_ltree, ltxtquery);
@@ -107,7 +107,7 @@ DROP FUNCTION ltree_decompress(internal);
DROP FUNCTION ltree_compress(internal);
-DROP FUNCTION ltree_consistent(internal,internal,int2);
+DROP FUNCTION ltree_consistent(internal,internal,int2,oid,internal);
DROP TYPE ltree_gist CASCADE;