/* contrib/ltree/ltree--1.1.sql */ -- complain if script is sourced in psql, rather than via CREATE EXTENSION \echo Use "CREATE EXTENSION ltree" to load this file. \quit CREATE FUNCTION ltree_in(cstring) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree_out(ltree) RETURNS cstring AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE TYPE ltree ( INTERNALLENGTH = -1, INPUT = ltree_in, OUTPUT = ltree_out, STORAGE = extended ); --Compare function for ltree CREATE FUNCTION ltree_cmp(ltree,ltree) RETURNS int4 AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree_lt(ltree,ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree_le(ltree,ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree_eq(ltree,ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree_ge(ltree,ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree_gt(ltree,ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree_ne(ltree,ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE OPERATOR < ( LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_lt, COMMUTATOR = '>', NEGATOR = '>=', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR <= ( LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_le, COMMUTATOR = '>=', NEGATOR = '>', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR >= ( LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_ge, COMMUTATOR = '<=', NEGATOR = '<', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR > ( LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_gt, COMMUTATOR = '<', NEGATOR = '<=', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR = ( LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_eq, COMMUTATOR = '=', NEGATOR = '<>', RESTRICT = eqsel, JOIN = eqjoinsel, SORT1 = '<', SORT2 = '<' ); CREATE OPERATOR <> ( LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_ne, COMMUTATOR = '<>', NEGATOR = '=', RESTRICT = neqsel, JOIN = neqjoinsel ); --util functions CREATE FUNCTION subltree(ltree,int4,int4) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION subpath(ltree,int4,int4) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION subpath(ltree,int4) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION index(ltree,ltree) RETURNS int4 AS 'MODULE_PATHNAME', 'ltree_index' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION index(ltree,ltree,int4) RETURNS int4 AS 'MODULE_PATHNAME', 'ltree_index' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION nlevel(ltree) RETURNS int4 AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree2text(ltree) RETURNS text AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION text2ltree(text) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION lca(_ltree) RETURNS ltree AS 'MODULE_PATHNAME','_lca' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION lca(ltree,ltree) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION lca(ltree,ltree,ltree) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION lca(ltree,ltree,ltree,ltree) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree,ltree) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree,ltree,ltree) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree_isparent(ltree,ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree_risparent(ltree,ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree_addltree(ltree,ltree) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree_addtext(ltree,text) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree_textadd(text,ltree) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltreeparentsel(internal, oid, internal, integer) RETURNS float8 AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE OPERATOR @> ( LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_isparent, COMMUTATOR = '<@', RESTRICT = ltreeparentsel, JOIN = contjoinsel ); CREATE OPERATOR ^@> ( LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_isparent, COMMUTATOR = '^<@', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR <@ ( LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_risparent, COMMUTATOR = '@>', RESTRICT = ltreeparentsel, JOIN = contjoinsel ); CREATE OPERATOR ^<@ ( LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_risparent, COMMUTATOR = '^@>', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR || ( LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_addltree ); CREATE OPERATOR || ( LEFTARG = ltree, RIGHTARG = text, PROCEDURE = ltree_addtext ); CREATE OPERATOR || ( LEFTARG = text, RIGHTARG = ltree, PROCEDURE = ltree_textadd ); -- B-tree support CREATE OPERATOR CLASS ltree_ops DEFAULT FOR TYPE ltree USING btree AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , FUNCTION 1 ltree_cmp(ltree, ltree); --lquery type CREATE FUNCTION lquery_in(cstring) RETURNS lquery AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION lquery_out(lquery) RETURNS cstring AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE TYPE lquery ( INTERNALLENGTH = -1, INPUT = lquery_in, OUTPUT = lquery_out, STORAGE = extended ); CREATE FUNCTION ltq_regex(ltree,lquery) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltq_rregex(lquery,ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE OPERATOR ~ ( LEFTARG = ltree, RIGHTARG = lquery, PROCEDURE = ltq_regex, COMMUTATOR = '~', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ~ ( LEFTARG = lquery, RIGHTARG = ltree, PROCEDURE = ltq_rregex, COMMUTATOR = '~', RESTRICT = contsel, JOIN = contjoinsel ); --not-indexed CREATE OPERATOR ^~ ( LEFTARG = ltree, RIGHTARG = lquery, PROCEDURE = ltq_regex, COMMUTATOR = '^~', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ^~ ( LEFTARG = lquery, RIGHTARG = ltree, PROCEDURE = ltq_rregex, COMMUTATOR = '^~', RESTRICT = contsel, JOIN = contjoinsel ); CREATE FUNCTION lt_q_regex(ltree,_lquery) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION lt_q_rregex(_lquery,ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE OPERATOR ? ( LEFTARG = ltree, RIGHTARG = _lquery, PROCEDURE = lt_q_regex, COMMUTATOR = '?', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ? ( LEFTARG = _lquery, RIGHTARG = ltree, PROCEDURE = lt_q_rregex, COMMUTATOR = '?', RESTRICT = contsel, JOIN = contjoinsel ); --not-indexed CREATE OPERATOR ^? ( LEFTARG = ltree, RIGHTARG = _lquery, PROCEDURE = lt_q_regex, COMMUTATOR = '^?', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ^? ( LEFTARG = _lquery, RIGHTARG = ltree, PROCEDURE = lt_q_rregex, COMMUTATOR = '^?', RESTRICT = contsel, JOIN = contjoinsel ); CREATE FUNCTION ltxtq_in(cstring) RETURNS ltxtquery AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltxtq_out(ltxtquery) RETURNS cstring AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE TYPE ltxtquery ( INTERNALLENGTH = -1, INPUT = ltxtq_in, OUTPUT = ltxtq_out, STORAGE = extended ); -- operations WITH ltxtquery CREATE FUNCTION ltxtq_exec(ltree, ltxtquery) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltxtq_rexec(ltxtquery, ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE OPERATOR @ ( LEFTARG = ltree, RIGHTARG = ltxtquery, PROCEDURE = ltxtq_exec, COMMUTATOR = '@', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR @ ( LEFTARG = ltxtquery, RIGHTARG = ltree, PROCEDURE = ltxtq_rexec, COMMUTATOR = '@', RESTRICT = contsel, JOIN = contjoinsel ); --not-indexed CREATE OPERATOR ^@ ( LEFTARG = ltree, RIGHTARG = ltxtquery, PROCEDURE = ltxtq_exec, COMMUTATOR = '^@', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ^@ ( LEFTARG = ltxtquery, RIGHTARG = ltree, PROCEDURE = ltxtq_rexec, COMMUTATOR = '^@', RESTRICT = contsel, JOIN = contjoinsel ); --GiST support for ltree CREATE FUNCTION ltree_gist_in(cstring) RETURNS ltree_gist AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ltree_gist_out(ltree_gist) RETURNS cstring AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE TYPE ltree_gist ( internallength = -1, input = ltree_gist_in, output = ltree_gist_out, storage = plain ); CREATE FUNCTION ltree_consistent(internal,ltree,int2,oid,internal) RETURNS bool as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ltree_compress(internal) RETURNS internal as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ltree_decompress(internal) RETURNS internal as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ltree_penalty(internal,internal,internal) RETURNS internal as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ltree_picksplit(internal, internal) RETURNS internal as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ltree_union(internal, internal) RETURNS ltree_gist as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ltree_same(ltree_gist, ltree_gist, internal) RETURNS internal as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR CLASS gist_ltree_ops DEFAULT FOR TYPE ltree USING gist AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , OPERATOR 10 @> , OPERATOR 11 <@ , 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, ltree, int2, oid, internal), FUNCTION 2 ltree_union (internal, internal), FUNCTION 3 ltree_compress (internal), FUNCTION 4 ltree_decompress (internal), FUNCTION 5 ltree_penalty (internal, internal, internal), FUNCTION 6 ltree_picksplit (internal, internal), FUNCTION 7 ltree_same (ltree_gist, ltree_gist, internal), STORAGE ltree_gist; -- arrays of ltree CREATE FUNCTION _ltree_isparent(_ltree,ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION _ltree_r_isparent(ltree,_ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION _ltree_risparent(_ltree,ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION _ltree_r_risparent(ltree,_ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION _ltq_regex(_ltree,lquery) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION _ltq_rregex(lquery,_ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION _lt_q_regex(_ltree,_lquery) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION _lt_q_rregex(_lquery,_ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION _ltxtq_exec(_ltree, ltxtquery) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION _ltxtq_rexec(ltxtquery, _ltree) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE OPERATOR @> ( LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_isparent, COMMUTATOR = '<@', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR <@ ( LEFTARG = ltree, RIGHTARG = _ltree, PROCEDURE = _ltree_r_isparent, COMMUTATOR = '@>', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR <@ ( LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_risparent, COMMUTATOR = '@>', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR @> ( LEFTARG = ltree, RIGHTARG = _ltree, PROCEDURE = _ltree_r_risparent, COMMUTATOR = '<@', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ~ ( LEFTARG = _ltree, RIGHTARG = lquery, PROCEDURE = _ltq_regex, COMMUTATOR = '~', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ~ ( LEFTARG = lquery, RIGHTARG = _ltree, PROCEDURE = _ltq_rregex, COMMUTATOR = '~', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ? ( LEFTARG = _ltree, RIGHTARG = _lquery, PROCEDURE = _lt_q_regex, COMMUTATOR = '?', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ? ( LEFTARG = _lquery, RIGHTARG = _ltree, PROCEDURE = _lt_q_rregex, COMMUTATOR = '?', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR @ ( LEFTARG = _ltree, RIGHTARG = ltxtquery, PROCEDURE = _ltxtq_exec, COMMUTATOR = '@', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR @ ( LEFTARG = ltxtquery, RIGHTARG = _ltree, PROCEDURE = _ltxtq_rexec, COMMUTATOR = '@', RESTRICT = contsel, JOIN = contjoinsel ); --not indexed CREATE OPERATOR ^@> ( LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_isparent, COMMUTATOR = '^<@', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ^<@ ( LEFTARG = ltree, RIGHTARG = _ltree, PROCEDURE = _ltree_r_isparent, COMMUTATOR = '^@>', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ^<@ ( LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_risparent, COMMUTATOR = '^@>', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ^@> ( LEFTARG = ltree, RIGHTARG = _ltree, PROCEDURE = _ltree_r_risparent, COMMUTATOR = '^<@', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ^~ ( LEFTARG = _ltree, RIGHTARG = lquery, PROCEDURE = _ltq_regex, COMMUTATOR = '^~', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ^~ ( LEFTARG = lquery, RIGHTARG = _ltree, PROCEDURE = _ltq_rregex, COMMUTATOR = '^~', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ^? ( LEFTARG = _ltree, RIGHTARG = _lquery, PROCEDURE = _lt_q_regex, COMMUTATOR = '^?', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ^? ( LEFTARG = _lquery, RIGHTARG = _ltree, PROCEDURE = _lt_q_rregex, COMMUTATOR = '^?', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ^@ ( LEFTARG = _ltree, RIGHTARG = ltxtquery, PROCEDURE = _ltxtq_exec, COMMUTATOR = '^@', RESTRICT = contsel, JOIN = contjoinsel ); CREATE OPERATOR ^@ ( LEFTARG = ltxtquery, RIGHTARG = _ltree, PROCEDURE = _ltxtq_rexec, COMMUTATOR = '^@', RESTRICT = contsel, JOIN = contjoinsel ); --extractors CREATE FUNCTION _ltree_extract_isparent(_ltree,ltree) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE OPERATOR ?@> ( LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_extract_isparent ); CREATE FUNCTION _ltree_extract_risparent(_ltree,ltree) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE OPERATOR ?<@ ( LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_extract_risparent ); CREATE FUNCTION _ltq_extract_regex(_ltree,lquery) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE OPERATOR ?~ ( LEFTARG = _ltree, RIGHTARG = lquery, PROCEDURE = _ltq_extract_regex ); CREATE FUNCTION _ltxtq_extract_exec(_ltree,ltxtquery) RETURNS ltree AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE OPERATOR ?@ ( LEFTARG = _ltree, RIGHTARG = ltxtquery, PROCEDURE = _ltxtq_extract_exec ); --GiST support for ltree[] CREATE FUNCTION _ltree_consistent(internal,_ltree,int2,oid,internal) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION _ltree_compress(internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION _ltree_penalty(internal,internal,internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION _ltree_picksplit(internal, internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION _ltree_union(internal, internal) RETURNS ltree_gist AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION _ltree_same(ltree_gist, ltree_gist, internal) RETURNS internal AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR CLASS gist__ltree_ops DEFAULT FOR TYPE _ltree USING gist AS 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, _ltree, int2, oid, internal), FUNCTION 2 _ltree_union (internal, internal), FUNCTION 3 _ltree_compress (internal), FUNCTION 4 ltree_decompress (internal), FUNCTION 5 _ltree_penalty (internal, internal, internal), FUNCTION 6 _ltree_picksplit (internal, internal), FUNCTION 7 _ltree_same (ltree_gist, ltree_gist, internal), STORAGE ltree_gist;