| /* 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); |
| |
| -- Bitmap support |
| |
| CREATE OPERATOR CLASS ltree_ops |
| DEFAULT FOR TYPE ltree USING bitmap 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; |