codekingpro/portable-devtools
114k
1/* contrib/ltree/ltree--1.1.sql */2 3-- complain if script is sourced in psql, rather than via CREATE EXTENSION4\echo Use "CREATE EXTENSION ltree" to load this file. \quit5 6CREATE FUNCTION ltree_in(cstring)7RETURNS ltree8AS 'MODULE_PATHNAME'9LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;10 11CREATE FUNCTION ltree_out(ltree)12RETURNS cstring13AS 'MODULE_PATHNAME'14LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;15 16CREATE TYPE ltree (17 INTERNALLENGTH = -1,18 INPUT = ltree_in,19 OUTPUT = ltree_out,20 STORAGE = extended21);22 23 24--Compare function for ltree25CREATE FUNCTION ltree_cmp(ltree,ltree)26RETURNS int427AS 'MODULE_PATHNAME'28LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;29 30CREATE FUNCTION ltree_lt(ltree,ltree)31RETURNS bool32AS 'MODULE_PATHNAME'33LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;34 35CREATE FUNCTION ltree_le(ltree,ltree)36RETURNS bool37AS 'MODULE_PATHNAME'38LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;39 40CREATE FUNCTION ltree_eq(ltree,ltree)41RETURNS bool42AS 'MODULE_PATHNAME'43LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;44 45CREATE FUNCTION ltree_ge(ltree,ltree)46RETURNS bool47AS 'MODULE_PATHNAME'48LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;49 50CREATE FUNCTION ltree_gt(ltree,ltree)51RETURNS bool52AS 'MODULE_PATHNAME'53LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;54 55CREATE FUNCTION ltree_ne(ltree,ltree)56RETURNS bool57AS 'MODULE_PATHNAME'58LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;59 60 61CREATE OPERATOR < (62 LEFTARG = ltree,63 RIGHTARG = ltree,64 PROCEDURE = ltree_lt,65 COMMUTATOR = '>',66 NEGATOR = '>=',67 RESTRICT = contsel,68 JOIN = contjoinsel69);70 71CREATE OPERATOR <= (72 LEFTARG = ltree,73 RIGHTARG = ltree,74 PROCEDURE = ltree_le,75 COMMUTATOR = '>=',76 NEGATOR = '>',77 RESTRICT = contsel,78 JOIN = contjoinsel79);80 81CREATE OPERATOR >= (82 LEFTARG = ltree,83 RIGHTARG = ltree,84 PROCEDURE = ltree_ge,85 COMMUTATOR = '<=',86 NEGATOR = '<',87 RESTRICT = contsel,88 JOIN = contjoinsel89);90 91CREATE OPERATOR > (92 LEFTARG = ltree,93 RIGHTARG = ltree,94 PROCEDURE = ltree_gt,95 COMMUTATOR = '<',96 NEGATOR = '<=',97 RESTRICT = contsel,98 JOIN = contjoinsel99);100 101CREATE OPERATOR = (102 LEFTARG = ltree,103 RIGHTARG = ltree,104 PROCEDURE = ltree_eq,105 COMMUTATOR = '=',106 NEGATOR = '<>',107 RESTRICT = eqsel,108 JOIN = eqjoinsel,109 SORT1 = '<',110 SORT2 = '<'111);112 113CREATE OPERATOR <> (114 LEFTARG = ltree,115 RIGHTARG = ltree,116 PROCEDURE = ltree_ne,117 COMMUTATOR = '<>',118 NEGATOR = '=',119 RESTRICT = neqsel,120 JOIN = neqjoinsel121);122 123--util functions124 125CREATE FUNCTION subltree(ltree,int4,int4)126RETURNS ltree127AS 'MODULE_PATHNAME'128LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;129 130CREATE FUNCTION subpath(ltree,int4,int4)131RETURNS ltree132AS 'MODULE_PATHNAME'133LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;134 135CREATE FUNCTION subpath(ltree,int4)136RETURNS ltree137AS 'MODULE_PATHNAME'138LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;139 140CREATE FUNCTION index(ltree,ltree)141RETURNS int4142AS 'MODULE_PATHNAME', 'ltree_index'143LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;144 145CREATE FUNCTION index(ltree,ltree,int4)146RETURNS int4147AS 'MODULE_PATHNAME', 'ltree_index'148LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;149 150CREATE FUNCTION nlevel(ltree)151RETURNS int4152AS 'MODULE_PATHNAME'153LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;154 155CREATE FUNCTION ltree2text(ltree)156RETURNS text157AS 'MODULE_PATHNAME'158LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;159 160CREATE FUNCTION text2ltree(text)161RETURNS ltree162AS 'MODULE_PATHNAME'163LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;164 165CREATE FUNCTION lca(_ltree)166RETURNS ltree167AS 'MODULE_PATHNAME','_lca'168LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;169 170CREATE FUNCTION lca(ltree,ltree)171RETURNS ltree172AS 'MODULE_PATHNAME'173LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;174 175CREATE FUNCTION lca(ltree,ltree,ltree)176RETURNS ltree177AS 'MODULE_PATHNAME'178LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;179 180CREATE FUNCTION lca(ltree,ltree,ltree,ltree)181RETURNS ltree182AS 'MODULE_PATHNAME'183LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;184 185CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree)186RETURNS ltree187AS 'MODULE_PATHNAME'188LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;189 190CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree)191RETURNS ltree192AS 'MODULE_PATHNAME'193LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;194 195CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree,ltree)196RETURNS ltree197AS 'MODULE_PATHNAME'198LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;199 200CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree,ltree,ltree)201RETURNS ltree202AS 'MODULE_PATHNAME'203LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;204 205CREATE FUNCTION ltree_isparent(ltree,ltree)206RETURNS bool207AS 'MODULE_PATHNAME'208LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;209 210CREATE FUNCTION ltree_risparent(ltree,ltree)211RETURNS bool212AS 'MODULE_PATHNAME'213LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;214 215CREATE FUNCTION ltree_addltree(ltree,ltree)216RETURNS ltree217AS 'MODULE_PATHNAME'218LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;219 220CREATE FUNCTION ltree_addtext(ltree,text)221RETURNS ltree222AS 'MODULE_PATHNAME'223LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;224 225CREATE FUNCTION ltree_textadd(text,ltree)226RETURNS ltree227AS 'MODULE_PATHNAME'228LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;229 230CREATE FUNCTION ltreeparentsel(internal, oid, internal, integer)231RETURNS float8232AS 'MODULE_PATHNAME'233LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;234 235CREATE OPERATOR @> (236 LEFTARG = ltree,237 RIGHTARG = ltree,238 PROCEDURE = ltree_isparent,239 COMMUTATOR = '<@',240 RESTRICT = ltreeparentsel,241 JOIN = contjoinsel242);243 244CREATE OPERATOR ^@> (245 LEFTARG = ltree,246 RIGHTARG = ltree,247 PROCEDURE = ltree_isparent,248 COMMUTATOR = '^<@',249 RESTRICT = contsel,250 JOIN = contjoinsel251);252 253CREATE OPERATOR <@ (254 LEFTARG = ltree,255 RIGHTARG = ltree,256 PROCEDURE = ltree_risparent,257 COMMUTATOR = '@>',258 RESTRICT = ltreeparentsel,259 JOIN = contjoinsel260);261 262CREATE OPERATOR ^<@ (263 LEFTARG = ltree,264 RIGHTARG = ltree,265 PROCEDURE = ltree_risparent,266 COMMUTATOR = '^@>',267 RESTRICT = contsel,268 JOIN = contjoinsel269);270 271CREATE OPERATOR || (272 LEFTARG = ltree,273 RIGHTARG = ltree,274 PROCEDURE = ltree_addltree275);276 277CREATE OPERATOR || (278 LEFTARG = ltree,279 RIGHTARG = text,280 PROCEDURE = ltree_addtext281);282 283CREATE OPERATOR || (284 LEFTARG = text,285 RIGHTARG = ltree,286 PROCEDURE = ltree_textadd287);288 289 290-- B-tree support291 292CREATE OPERATOR CLASS ltree_ops293 DEFAULT FOR TYPE ltree USING btree AS294 OPERATOR 1 < ,295 OPERATOR 2 <= ,296 OPERATOR 3 = ,297 OPERATOR 4 >= ,298 OPERATOR 5 > ,299 FUNCTION 1 ltree_cmp(ltree, ltree);300 301 302--lquery type303CREATE FUNCTION lquery_in(cstring)304RETURNS lquery305AS 'MODULE_PATHNAME'306LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;307 308CREATE FUNCTION lquery_out(lquery)309RETURNS cstring310AS 'MODULE_PATHNAME'311LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;312 313CREATE TYPE lquery (314 INTERNALLENGTH = -1,315 INPUT = lquery_in,316 OUTPUT = lquery_out,317 STORAGE = extended318);319 320CREATE FUNCTION ltq_regex(ltree,lquery)321RETURNS bool322AS 'MODULE_PATHNAME'323LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;324 325CREATE FUNCTION ltq_rregex(lquery,ltree)326RETURNS bool327AS 'MODULE_PATHNAME'328LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;329 330CREATE OPERATOR ~ (331 LEFTARG = ltree,332 RIGHTARG = lquery,333 PROCEDURE = ltq_regex,334 COMMUTATOR = '~',335 RESTRICT = contsel,336 JOIN = contjoinsel337);338 339CREATE OPERATOR ~ (340 LEFTARG = lquery,341 RIGHTARG = ltree,342 PROCEDURE = ltq_rregex,343 COMMUTATOR = '~',344 RESTRICT = contsel,345 JOIN = contjoinsel346);347 348--not-indexed349CREATE OPERATOR ^~ (350 LEFTARG = ltree,351 RIGHTARG = lquery,352 PROCEDURE = ltq_regex,353 COMMUTATOR = '^~',354 RESTRICT = contsel,355 JOIN = contjoinsel356);357 358CREATE OPERATOR ^~ (359 LEFTARG = lquery,360 RIGHTARG = ltree,361 PROCEDURE = ltq_rregex,362 COMMUTATOR = '^~',363 RESTRICT = contsel,364 JOIN = contjoinsel365);366 367CREATE FUNCTION lt_q_regex(ltree,_lquery)368RETURNS bool369AS 'MODULE_PATHNAME'370LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;371 372CREATE FUNCTION lt_q_rregex(_lquery,ltree)373RETURNS bool374AS 'MODULE_PATHNAME'375LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;376 377CREATE OPERATOR ? (378 LEFTARG = ltree,379 RIGHTARG = _lquery,380 PROCEDURE = lt_q_regex,381 COMMUTATOR = '?',382 RESTRICT = contsel,383 JOIN = contjoinsel384);385 386CREATE OPERATOR ? (387 LEFTARG = _lquery,388 RIGHTARG = ltree,389 PROCEDURE = lt_q_rregex,390 COMMUTATOR = '?',391 RESTRICT = contsel,392 JOIN = contjoinsel393);394 395--not-indexed396CREATE OPERATOR ^? (397 LEFTARG = ltree,398 RIGHTARG = _lquery,399 PROCEDURE = lt_q_regex,400 COMMUTATOR = '^?',401 RESTRICT = contsel,402 JOIN = contjoinsel403);404 405CREATE OPERATOR ^? (406 LEFTARG = _lquery,407 RIGHTARG = ltree,408 PROCEDURE = lt_q_rregex,409 COMMUTATOR = '^?',410 RESTRICT = contsel,411 JOIN = contjoinsel412);413 414CREATE FUNCTION ltxtq_in(cstring)415RETURNS ltxtquery416AS 'MODULE_PATHNAME'417LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;418 419CREATE FUNCTION ltxtq_out(ltxtquery)420RETURNS cstring421AS 'MODULE_PATHNAME'422LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;423 424CREATE TYPE ltxtquery (425 INTERNALLENGTH = -1,426 INPUT = ltxtq_in,427 OUTPUT = ltxtq_out,428 STORAGE = extended429);430 431-- operations WITH ltxtquery432 433CREATE FUNCTION ltxtq_exec(ltree, ltxtquery)434RETURNS bool435AS 'MODULE_PATHNAME'436LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;437 438CREATE FUNCTION ltxtq_rexec(ltxtquery, ltree)439RETURNS bool440AS 'MODULE_PATHNAME'441LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;442 443CREATE OPERATOR @ (444 LEFTARG = ltree,445 RIGHTARG = ltxtquery,446 PROCEDURE = ltxtq_exec,447 COMMUTATOR = '@',448 RESTRICT = contsel,449 JOIN = contjoinsel450);451 452CREATE OPERATOR @ (453 LEFTARG = ltxtquery,454 RIGHTARG = ltree,455 PROCEDURE = ltxtq_rexec,456 COMMUTATOR = '@',457 RESTRICT = contsel,458 JOIN = contjoinsel459);460 461--not-indexed462CREATE OPERATOR ^@ (463 LEFTARG = ltree,464 RIGHTARG = ltxtquery,465 PROCEDURE = ltxtq_exec,466 COMMUTATOR = '^@',467 RESTRICT = contsel,468 JOIN = contjoinsel469);470 471CREATE OPERATOR ^@ (472 LEFTARG = ltxtquery,473 RIGHTARG = ltree,474 PROCEDURE = ltxtq_rexec,475 COMMUTATOR = '^@',476 RESTRICT = contsel,477 JOIN = contjoinsel478);479 480--GiST support for ltree481CREATE FUNCTION ltree_gist_in(cstring)482RETURNS ltree_gist483AS 'MODULE_PATHNAME'484LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;485 486CREATE FUNCTION ltree_gist_out(ltree_gist)487RETURNS cstring488AS 'MODULE_PATHNAME'489LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;490 491CREATE TYPE ltree_gist (492 internallength = -1,493 input = ltree_gist_in,494 output = ltree_gist_out,495 storage = plain496);497 498 499CREATE FUNCTION ltree_consistent(internal,ltree,int2,oid,internal)500RETURNS bool as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;501 502CREATE FUNCTION ltree_compress(internal)503RETURNS internal as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;504 505CREATE FUNCTION ltree_decompress(internal)506RETURNS internal as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;507 508CREATE FUNCTION ltree_penalty(internal,internal,internal)509RETURNS internal as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;510 511CREATE FUNCTION ltree_picksplit(internal, internal)512RETURNS internal as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;513 514CREATE FUNCTION ltree_union(internal, internal)515RETURNS ltree_gist as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;516 517CREATE FUNCTION ltree_same(ltree_gist, ltree_gist, internal)518RETURNS internal as 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;519 520CREATE OPERATOR CLASS gist_ltree_ops521 DEFAULT FOR TYPE ltree USING gist AS522 OPERATOR 1 < ,523 OPERATOR 2 <= ,524 OPERATOR 3 = ,525 OPERATOR 4 >= ,526 OPERATOR 5 > ,527 OPERATOR 10 @> ,528 OPERATOR 11 <@ ,529 OPERATOR 12 ~ (ltree, lquery) ,530 OPERATOR 13 ~ (lquery, ltree) ,531 OPERATOR 14 @ (ltree, ltxtquery) ,532 OPERATOR 15 @ (ltxtquery, ltree) ,533 OPERATOR 16 ? (ltree, _lquery) ,534 OPERATOR 17 ? (_lquery, ltree) ,535 FUNCTION 1 ltree_consistent (internal, ltree, int2, oid, internal),536 FUNCTION 2 ltree_union (internal, internal),537 FUNCTION 3 ltree_compress (internal),538 FUNCTION 4 ltree_decompress (internal),539 FUNCTION 5 ltree_penalty (internal, internal, internal),540 FUNCTION 6 ltree_picksplit (internal, internal),541 FUNCTION 7 ltree_same (ltree_gist, ltree_gist, internal),542 STORAGE ltree_gist;543 544 545-- arrays of ltree546 547CREATE FUNCTION _ltree_isparent(_ltree,ltree)548RETURNS bool549AS 'MODULE_PATHNAME'550LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;551 552CREATE FUNCTION _ltree_r_isparent(ltree,_ltree)553RETURNS bool554AS 'MODULE_PATHNAME'555LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;556 557CREATE FUNCTION _ltree_risparent(_ltree,ltree)558RETURNS bool559AS 'MODULE_PATHNAME'560LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;561 562CREATE FUNCTION _ltree_r_risparent(ltree,_ltree)563RETURNS bool564AS 'MODULE_PATHNAME'565LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;566 567CREATE FUNCTION _ltq_regex(_ltree,lquery)568RETURNS bool569AS 'MODULE_PATHNAME'570LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;571 572CREATE FUNCTION _ltq_rregex(lquery,_ltree)573RETURNS bool574AS 'MODULE_PATHNAME'575LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;576 577CREATE FUNCTION _lt_q_regex(_ltree,_lquery)578RETURNS bool579AS 'MODULE_PATHNAME'580LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;581 582CREATE FUNCTION _lt_q_rregex(_lquery,_ltree)583RETURNS bool584AS 'MODULE_PATHNAME'585LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;586 587CREATE FUNCTION _ltxtq_exec(_ltree, ltxtquery)588RETURNS bool589AS 'MODULE_PATHNAME'590LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;591 592CREATE FUNCTION _ltxtq_rexec(ltxtquery, _ltree)593RETURNS bool594AS 'MODULE_PATHNAME'595LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;596 597CREATE OPERATOR @> (598 LEFTARG = _ltree,599 RIGHTARG = ltree,600 PROCEDURE = _ltree_isparent,601 COMMUTATOR = '<@',602 RESTRICT = contsel,603 JOIN = contjoinsel604);605 606CREATE OPERATOR <@ (607 LEFTARG = ltree,608 RIGHTARG = _ltree,609 PROCEDURE = _ltree_r_isparent,610 COMMUTATOR = '@>',611 RESTRICT = contsel,612 JOIN = contjoinsel613);614 615CREATE OPERATOR <@ (616 LEFTARG = _ltree,617 RIGHTARG = ltree,618 PROCEDURE = _ltree_risparent,619 COMMUTATOR = '@>',620 RESTRICT = contsel,621 JOIN = contjoinsel622);623 624CREATE OPERATOR @> (625 LEFTARG = ltree,626 RIGHTARG = _ltree,627 PROCEDURE = _ltree_r_risparent,628 COMMUTATOR = '<@',629 RESTRICT = contsel,630 JOIN = contjoinsel631);632 633CREATE OPERATOR ~ (634 LEFTARG = _ltree,635 RIGHTARG = lquery,636 PROCEDURE = _ltq_regex,637 COMMUTATOR = '~',638 RESTRICT = contsel,639 JOIN = contjoinsel640);641 642CREATE OPERATOR ~ (643 LEFTARG = lquery,644 RIGHTARG = _ltree,645 PROCEDURE = _ltq_rregex,646 COMMUTATOR = '~',647 RESTRICT = contsel,648 JOIN = contjoinsel649);650 651CREATE OPERATOR ? (652 LEFTARG = _ltree,653 RIGHTARG = _lquery,654 PROCEDURE = _lt_q_regex,655 COMMUTATOR = '?',656 RESTRICT = contsel,657 JOIN = contjoinsel658);659 660CREATE OPERATOR ? (661 LEFTARG = _lquery,662 RIGHTARG = _ltree,663 PROCEDURE = _lt_q_rregex,664 COMMUTATOR = '?',665 RESTRICT = contsel,666 JOIN = contjoinsel667);668 669CREATE OPERATOR @ (670 LEFTARG = _ltree,671 RIGHTARG = ltxtquery,672 PROCEDURE = _ltxtq_exec,673 COMMUTATOR = '@',674 RESTRICT = contsel,675 JOIN = contjoinsel676);677 678CREATE OPERATOR @ (679 LEFTARG = ltxtquery,680 RIGHTARG = _ltree,681 PROCEDURE = _ltxtq_rexec,682 COMMUTATOR = '@',683 RESTRICT = contsel,684 JOIN = contjoinsel685);686 687 688--not indexed689CREATE OPERATOR ^@> (690 LEFTARG = _ltree,691 RIGHTARG = ltree,692 PROCEDURE = _ltree_isparent,693 COMMUTATOR = '^<@',694 RESTRICT = contsel,695 JOIN = contjoinsel696);697 698CREATE OPERATOR ^<@ (699 LEFTARG = ltree,700 RIGHTARG = _ltree,701 PROCEDURE = _ltree_r_isparent,702 COMMUTATOR = '^@>',703 RESTRICT = contsel,704 JOIN = contjoinsel705);706 707CREATE OPERATOR ^<@ (708 LEFTARG = _ltree,709 RIGHTARG = ltree,710 PROCEDURE = _ltree_risparent,711 COMMUTATOR = '^@>',712 RESTRICT = contsel,713 JOIN = contjoinsel714);715 716CREATE OPERATOR ^@> (717 LEFTARG = ltree,718 RIGHTARG = _ltree,719 PROCEDURE = _ltree_r_risparent,720 COMMUTATOR = '^<@',721 RESTRICT = contsel,722 JOIN = contjoinsel723);724 725CREATE OPERATOR ^~ (726 LEFTARG = _ltree,727 RIGHTARG = lquery,728 PROCEDURE = _ltq_regex,729 COMMUTATOR = '^~',730 RESTRICT = contsel,731 JOIN = contjoinsel732);733 734CREATE OPERATOR ^~ (735 LEFTARG = lquery,736 RIGHTARG = _ltree,737 PROCEDURE = _ltq_rregex,738 COMMUTATOR = '^~',739 RESTRICT = contsel,740 JOIN = contjoinsel741);742 743CREATE OPERATOR ^? (744 LEFTARG = _ltree,745 RIGHTARG = _lquery,746 PROCEDURE = _lt_q_regex,747 COMMUTATOR = '^?',748 RESTRICT = contsel,749 JOIN = contjoinsel750);751 752CREATE OPERATOR ^? (753 LEFTARG = _lquery,754 RIGHTARG = _ltree,755 PROCEDURE = _lt_q_rregex,756 COMMUTATOR = '^?',757 RESTRICT = contsel,758 JOIN = contjoinsel759);760 761CREATE OPERATOR ^@ (762 LEFTARG = _ltree,763 RIGHTARG = ltxtquery,764 PROCEDURE = _ltxtq_exec,765 COMMUTATOR = '^@',766 RESTRICT = contsel,767 JOIN = contjoinsel768);769 770CREATE OPERATOR ^@ (771 LEFTARG = ltxtquery,772 RIGHTARG = _ltree,773 PROCEDURE = _ltxtq_rexec,774 COMMUTATOR = '^@',775 RESTRICT = contsel,776 JOIN = contjoinsel777);778 779--extractors780CREATE FUNCTION _ltree_extract_isparent(_ltree,ltree)781RETURNS ltree782AS 'MODULE_PATHNAME'783LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;784 785CREATE OPERATOR ?@> (786 LEFTARG = _ltree,787 RIGHTARG = ltree,788 PROCEDURE = _ltree_extract_isparent789);790 791CREATE FUNCTION _ltree_extract_risparent(_ltree,ltree)792RETURNS ltree793AS 'MODULE_PATHNAME'794LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;795 796CREATE OPERATOR ?<@ (797 LEFTARG = _ltree,798 RIGHTARG = ltree,799 PROCEDURE = _ltree_extract_risparent800);801 802CREATE FUNCTION _ltq_extract_regex(_ltree,lquery)803RETURNS ltree804AS 'MODULE_PATHNAME'805LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;806 807CREATE OPERATOR ?~ (808 LEFTARG = _ltree,809 RIGHTARG = lquery,810 PROCEDURE = _ltq_extract_regex811);812 813CREATE FUNCTION _ltxtq_extract_exec(_ltree,ltxtquery)814RETURNS ltree815AS 'MODULE_PATHNAME'816LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;817 818CREATE OPERATOR ?@ (819 LEFTARG = _ltree,820 RIGHTARG = ltxtquery,821 PROCEDURE = _ltxtq_extract_exec822);823 824--GiST support for ltree[]825CREATE FUNCTION _ltree_consistent(internal,_ltree,int2,oid,internal)826RETURNS bool827AS 'MODULE_PATHNAME'828LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;829 830CREATE FUNCTION _ltree_compress(internal)831RETURNS internal832AS 'MODULE_PATHNAME'833LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;834 835CREATE FUNCTION _ltree_penalty(internal,internal,internal)836RETURNS internal837AS 'MODULE_PATHNAME'838LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;839 840CREATE FUNCTION _ltree_picksplit(internal, internal)841RETURNS internal842AS 'MODULE_PATHNAME'843LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;844 845CREATE FUNCTION _ltree_union(internal, internal)846RETURNS ltree_gist847AS 'MODULE_PATHNAME'848LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;849 850CREATE FUNCTION _ltree_same(ltree_gist, ltree_gist, internal)851RETURNS internal852AS 'MODULE_PATHNAME'853LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;854 855CREATE OPERATOR CLASS gist__ltree_ops856 DEFAULT FOR TYPE _ltree USING gist AS857 OPERATOR 10 <@ (_ltree, ltree),858 OPERATOR 11 @> (ltree, _ltree),859 OPERATOR 12 ~ (_ltree, lquery),860 OPERATOR 13 ~ (lquery, _ltree),861 OPERATOR 14 @ (_ltree, ltxtquery),862 OPERATOR 15 @ (ltxtquery, _ltree),863 OPERATOR 16 ? (_ltree, _lquery),864 OPERATOR 17 ? (_lquery, _ltree),865 FUNCTION 1 _ltree_consistent (internal, _ltree, int2, oid, internal),866 FUNCTION 2 _ltree_union (internal, internal),867 FUNCTION 3 _ltree_compress (internal),868 FUNCTION 4 ltree_decompress (internal),869 FUNCTION 5 _ltree_penalty (internal, internal, internal),870 FUNCTION 6 _ltree_picksplit (internal, internal),871 FUNCTION 7 _ltree_same (ltree_gist, ltree_gist, internal),872 STORAGE ltree_gist;873 