summaryrefslogtreecommitdiff
path: root/contrib/ltree
diff options
context:
space:
mode:
authorBruce Momjian2002-10-18 18:41:22 +0000
committerBruce Momjian2002-10-18 18:41:22 +0000
commitaa4c702eac936964649f905741b4a99f4b489200 (patch)
tree517d3c28aa3d28eb95b19c8676c940b5cefe2031 /contrib/ltree
parentfb9bc342fffc157d6ca4b635aeeaccb3c1370b91 (diff)
Update /contrib for "autocommit TO 'on'".
Create objects in public schema. Make spacing/capitalization consistent. Remove transaction block use for object creation. Remove unneeded function GRANTs.
Diffstat (limited to 'contrib/ltree')
-rw-r--r--contrib/ltree/expected/ltree.out434
-rw-r--r--contrib/ltree/ltree.sql.in477
-rw-r--r--contrib/ltree/ltreetest.sql32
-rw-r--r--contrib/ltree/sql/ltree.sql446
4 files changed, 768 insertions, 621 deletions
diff --git a/contrib/ltree/expected/ltree.out b/contrib/ltree/expected/ltree.out
index 4af0260bed..7e710d3335 100644
--- a/contrib/ltree/expected/ltree.out
+++ b/contrib/ltree/expected/ltree.out
@@ -1,1008 +1,1008 @@
\set ECHO none
psql:ltree.sql:9: WARNING: ProcedureCreate: type ltree is not yet defined
psql:ltree.sql:14: WARNING: Argument type "ltree" is only a shell
-psql:ltree.sql:238: WARNING: ProcedureCreate: type lquery is not yet defined
-psql:ltree.sql:243: WARNING: Argument type "lquery" is only a shell
-psql:ltree.sql:290: WARNING: ProcedureCreate: type ltxtquery is not yet defined
-psql:ltree.sql:295: WARNING: Argument type "ltxtquery" is only a shell
-psql:ltree.sql:345: WARNING: ProcedureCreate: type ltree_gist is not yet defined
-psql:ltree.sql:350: WARNING: Argument type "ltree_gist" is only a shell
-select ''::ltree;
+psql:ltree.sql:281: WARNING: ProcedureCreate: type lquery is not yet defined
+psql:ltree.sql:286: WARNING: Argument type "lquery" is only a shell
+psql:ltree.sql:345: WARNING: ProcedureCreate: type ltxtquery is not yet defined
+psql:ltree.sql:350: WARNING: Argument type "ltxtquery" is only a shell
+psql:ltree.sql:412: WARNING: ProcedureCreate: type ltree_gist is not yet defined
+psql:ltree.sql:417: WARNING: Argument type "ltree_gist" is only a shell
+SELECT ''::ltree;
ltree
-------
(1 row)
-select '1'::ltree;
+SELECT '1'::ltree;
ltree
-------
1
(1 row)
-select '1.2'::ltree;
+SELECT '1.2'::ltree;
ltree
-------
1.2
(1 row)
-select '1.2._3'::ltree;
+SELECT '1.2._3'::ltree;
ltree
--------
1.2._3
(1 row)
-select subltree('Top.Child1.Child2',1,2);
+SELECT subltree('Top.Child1.Child2',1,2);
subltree
----------
Child1
(1 row)
-select subpath('Top.Child1.Child2',1,2);
+SELECT subpath('Top.Child1.Child2',1,2);
subpath
---------------
Child1.Child2
(1 row)
-select subpath('Top.Child1.Child2',-1,1);
+SELECT subpath('Top.Child1.Child2',-1,1);
subpath
---------
Child2
(1 row)
-select subpath('Top.Child1.Child2',0,-2);
+SELECT subpath('Top.Child1.Child2',0,-2);
subpath
---------
Top
(1 row)
-select subpath('Top.Child1.Child2',0,-1);
+SELECT subpath('Top.Child1.Child2',0,-1);
subpath
------------
Top.Child1
(1 row)
-select subpath('Top.Child1.Child2',0,0);
+SELECT subpath('Top.Child1.Child2',0,0);
subpath
-------------------
Top.Child1.Child2
(1 row)
-select subpath('Top.Child1.Child2',1,0);
+SELECT subpath('Top.Child1.Child2',1,0);
subpath
---------------
Child1.Child2
(1 row)
-select subpath('Top.Child1.Child2',0);
+SELECT subpath('Top.Child1.Child2',0);
subpath
-------------------
Top.Child1.Child2
(1 row)
-select subpath('Top.Child1.Child2',1);
+SELECT subpath('Top.Child1.Child2',1);
subpath
---------------
Child1.Child2
(1 row)
-select 'Top.Child1.Child2'::ltree || 'Child3'::text;
+SELECT 'Top.Child1.Child2'::ltree || 'Child3'::text;
?column?
--------------------------
Top.Child1.Child2.Child3
(1 row)
-select 'Top.Child1.Child2'::ltree || 'Child3'::ltree;
+SELECT 'Top.Child1.Child2'::ltree || 'Child3'::ltree;
?column?
--------------------------
Top.Child1.Child2.Child3
(1 row)
-select 'Top_0'::ltree || 'Top.Child1.Child2'::ltree;
+SELECT 'Top_0'::ltree || 'Top.Child1.Child2'::ltree;
?column?
-------------------------
Top_0.Top.Child1.Child2
(1 row)
-select 'Top.Child1.Child2'::ltree || ''::ltree;
+SELECT 'Top.Child1.Child2'::ltree || ''::ltree;
?column?
-------------------
Top.Child1.Child2
(1 row)
-select ''::ltree || 'Top.Child1.Child2'::ltree;
+SELECT ''::ltree || 'Top.Child1.Child2'::ltree;
?column?
-------------------
Top.Child1.Child2
(1 row)
-select lca('{la.2.3,1.2.3.4.5.6,}') is null;
+SELECT lca('{la.2.3,1.2.3.4.5.6,}') IS NULL;
?column?
----------
t
(1 row)
-select lca('{la.2.3,1.2.3.4.5.6}') is null;
+SELECT lca('{la.2.3,1.2.3.4.5.6}') IS NULL;
?column?
----------
f
(1 row)
-select lca('{1.la.2.3,1.2.3.4.5.6}');
+SELECT lca('{1.la.2.3,1.2.3.4.5.6}');
lca
-----
1
(1 row)
-select lca('{1.2.3,1.2.3.4.5.6}');
+SELECT lca('{1.2.3,1.2.3.4.5.6}');
lca
-----
1.2
(1 row)
-select lca('1.la.2.3','1.2.3.4.5.6');
+SELECT lca('1.la.2.3','1.2.3.4.5.6');
lca
-----
1
(1 row)
-select lca('1.2.3','1.2.3.4.5.6');
+SELECT lca('1.2.3','1.2.3.4.5.6');
lca
-----
1.2
(1 row)
-select lca('1.2.2.3','1.2.3.4.5.6');
+SELECT lca('1.2.2.3','1.2.3.4.5.6');
lca
-----
1.2
(1 row)
-select lca('1.2.2.3','1.2.3.4.5.6','');
+SELECT lca('1.2.2.3','1.2.3.4.5.6','');
lca
-----
(1 row)
-select lca('1.2.2.3','1.2.3.4.5.6','2');
+SELECT lca('1.2.2.3','1.2.3.4.5.6','2');
lca
-----
(1 row)
-select lca('1.2.2.3','1.2.3.4.5.6','1');
+SELECT lca('1.2.2.3','1.2.3.4.5.6','1');
lca
-----
(1 row)
-select '1'::lquery;
+SELECT '1'::lquery;
lquery
--------
1
(1 row)
-select '4|3|2'::lquery;
+SELECT '4|3|2'::lquery;
lquery
--------
4|3|2
(1 row)
-select '1.2'::lquery;
+SELECT '1.2'::lquery;
lquery
--------
1.2
(1 row)
-select '1.4|3|2'::lquery;
+SELECT '1.4|3|2'::lquery;
lquery
---------
1.4|3|2
(1 row)
-select '1.0'::lquery;
+SELECT '1.0'::lquery;
lquery
--------
1.0
(1 row)
-select '4|3|2.0'::lquery;
+SELECT '4|3|2.0'::lquery;
lquery
---------
4|3|2.0
(1 row)
-select '1.2.0'::lquery;
+SELECT '1.2.0'::lquery;
lquery
--------
1.2.0
(1 row)
-select '1.4|3|2.0'::lquery;
+SELECT '1.4|3|2.0'::lquery;
lquery
-----------
1.4|3|2.0
(1 row)
-select '1.*'::lquery;
+SELECT '1.*'::lquery;
lquery
--------
1.*
(1 row)
-select '4|3|2.*'::lquery;
+SELECT '4|3|2.*'::lquery;
lquery
---------
4|3|2.*
(1 row)
-select '1.2.*'::lquery;
+SELECT '1.2.*'::lquery;
lquery
--------
1.2.*
(1 row)
-select '1.4|3|2.*'::lquery;
+SELECT '1.4|3|2.*'::lquery;
lquery
-----------
1.4|3|2.*
(1 row)
-select '*.1.*'::lquery;
+SELECT '*.1.*'::lquery;
lquery
--------
*.1.*
(1 row)
-select '*.4|3|2.*'::lquery;
+SELECT '*.4|3|2.*'::lquery;
lquery
-----------
*.4|3|2.*
(1 row)
-select '*.1.2.*'::lquery;
+SELECT '*.1.2.*'::lquery;
lquery
---------
*.1.2.*
(1 row)
-select '*.1.4|3|2.*'::lquery;
+SELECT '*.1.4|3|2.*'::lquery;
lquery
-------------
*.1.4|3|2.*
(1 row)
-select '1.*.4|3|2'::lquery;
+SELECT '1.*.4|3|2'::lquery;
lquery
-----------
1.*.4|3|2
(1 row)
-select '1.*.4|3|2.0'::lquery;
+SELECT '1.*.4|3|2.0'::lquery;
lquery
-------------
1.*.4|3|2.0
(1 row)
-select '1.*.4|3|2.*{1,4}'::lquery;
+SELECT '1.*.4|3|2.*{1,4}'::lquery;
lquery
------------------
1.*.4|3|2.*{1,4}
(1 row)
-select '1.*.4|3|2.*{,4}'::lquery;
+SELECT '1.*.4|3|2.*{,4}'::lquery;
lquery
-----------------
1.*.4|3|2.*{,4}
(1 row)
-select '1.*.4|3|2.*{1,}'::lquery;
+SELECT '1.*.4|3|2.*{1,}'::lquery;
lquery
-----------------
1.*.4|3|2.*{1,}
(1 row)
-select '1.*.4|3|2.*{1}'::lquery;
+SELECT '1.*.4|3|2.*{1}'::lquery;
lquery
----------------
1.*.4|3|2.*{1}
(1 row)
-select 'qwerty%@*.tu'::lquery;
+SELECT 'qwerty%@*.tu'::lquery;
lquery
--------------
qwerty%@*.tu
(1 row)
-select nlevel('1.2.3.4');
+SELECT nlevel('1.2.3.4');
nlevel
--------
4
(1 row)
-select '1.2'::ltree < '2.2'::ltree;
+SELECT '1.2'::ltree < '2.2'::ltree;
?column?
----------
t
(1 row)
-select '1.2'::ltree <= '2.2'::ltree;
+SELECT '1.2'::ltree <= '2.2'::ltree;
?column?
----------
t
(1 row)
-select '2.2'::ltree = '2.2'::ltree;
+SELECT '2.2'::ltree = '2.2'::ltree;
?column?
----------
t
(1 row)
-select '3.2'::ltree >= '2.2'::ltree;
+SELECT '3.2'::ltree >= '2.2'::ltree;
?column?
----------
t
(1 row)
-select '3.2'::ltree > '2.2'::ltree;
+SELECT '3.2'::ltree > '2.2'::ltree;
?column?
----------
t
(1 row)
-select '1.2.3'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.2.3'::ltree @> '1.2.3.4'::ltree;
?column?
----------
t
(1 row)
-select '1.2.3.4'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.2.3.4'::ltree @> '1.2.3.4'::ltree;
?column?
----------
t
(1 row)
-select '1.2.3.4.5'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.2.3.4.5'::ltree @> '1.2.3.4'::ltree;
?column?
----------
f
(1 row)
-select '1.3.3'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.3.3'::ltree @> '1.2.3.4'::ltree;
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'A.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'A.b.c.d.e';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
?column?
----------
t
(1 row)
-select 'aa.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
?column?
----------
f
(1 row)
-select 'aa.b.c.d.e'::ltree ~ 'A*.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A*.b.c.d.e';
?column?
----------
f
(1 row)
-select 'aa.b.c.d.e'::ltree ~ 'A*@.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A*@.b.c.d.e';
?column?
----------
t
(1 row)
-select 'aa.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
?column?
----------
t
(1 row)
-select 'g.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
+SELECT 'g.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*{3}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{3}.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*{2}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2}.e';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*{4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{4}.e';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*{,4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{,4}.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,}.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,4}.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,3}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,3}.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,3}';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,3}';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,4}';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,4}';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,5}';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,5}';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*{2,3}.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2,3}.e';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*{2,4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2,4}.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*{2,5}.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2,5}.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.e.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.e.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.d.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.a.*.d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.d.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!d.*';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.!d';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!d';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!d.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '!a.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!a.*';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.!e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!e';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.!e.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!e.*';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*.!e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!e';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*.!d';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!d';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!d.*';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.*.!f.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!f.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.a.*.!f.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.!f.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.a.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.!d.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.a.!d';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.!d';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.!d.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.!b.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.!b.c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.c.*';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.!b.*.c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*.c.*';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ '!b.*.c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.c.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '!b.b.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.b.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '!b.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '!b.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.!c.*.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.!c.*.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*.e';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*.e';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*.e';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ '!b.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.!c.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.!c.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*';
?column?
----------
f
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*';
?column?
----------
t
(1 row)
-select 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*';
?column?
----------
f
(1 row)
-select 'QWER_TY'::ltree ~ 'q%@*';
+SELECT 'QWER_TY'::ltree ~ 'q%@*';
?column?
----------
t
(1 row)
-select 'QWER_TY'::ltree ~ 'Q_t%@*';
+SELECT 'QWER_TY'::ltree ~ 'Q_t%@*';
?column?
----------
t
(1 row)
-select 'QWER_GY'::ltree ~ 'q_t%@*';
+SELECT 'QWER_GY'::ltree ~ 'q_t%@*';
?column?
----------
f
(1 row)
--ltxtquery
-select '!tree & aWdf@*'::ltxtquery;
+SELECT '!tree & aWdf@*'::ltxtquery;
ltxtquery
----------------
!tree & aWdf@*
(1 row)
-select 'tree & aw_qw%*'::ltxtquery;
+SELECT 'tree & aw_qw%*'::ltxtquery;
ltxtquery
----------------
tree & aw_qw%*
(1 row)
-select 'ltree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
+SELECT 'ltree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
?column?
----------
t
(1 row)
-select 'tree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
?column?
----------
f
(1 row)
-select 'tree.awdfg'::ltree @ '!tree | aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ '!tree | aWdf@*'::ltxtquery;
?column?
----------
t
(1 row)
-select 'tree.awdfg'::ltree @ 'tree | aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree | aWdf@*'::ltxtquery;
?column?
----------
t
(1 row)
-select 'tree.awdfg'::ltree @ 'tree & aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf@*'::ltxtquery;
?column?
----------
t
(1 row)
-select 'tree.awdfg'::ltree @ 'tree & aWdf@'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf@'::ltxtquery;
?column?
----------
f
(1 row)
-select 'tree.awdfg'::ltree @ 'tree & aWdf*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf*'::ltxtquery;
?column?
----------
f
(1 row)
-select 'tree.awdfg'::ltree @ 'tree & aWdf'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf'::ltxtquery;
?column?
----------
f
(1 row)
-select 'tree.awdfg'::ltree @ 'tree & awdf*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & awdf*'::ltxtquery;
?column?
----------
t
(1 row)
-select 'tree.awdfg'::ltree @ 'tree & aWdfg@'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdfg@'::ltxtquery;
?column?
----------
t
(1 row)
-select 'tree.awdfg_qwerty'::ltree @ 'tree & aw_qw%*'::ltxtquery;
+SELECT 'tree.awdfg_qwerty'::ltree @ 'tree & aw_qw%*'::ltxtquery;
?column?
----------
t
(1 row)
-select 'tree.awdfg_qwerty'::ltree @ 'tree & aw_rw%*'::ltxtquery;
+SELECT 'tree.awdfg_qwerty'::ltree @ 'tree & aw_rw%*'::ltxtquery;
?column?
----------
f
(1 row)
--arrays
-select '{1.2.3}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3}'::ltree[] @> '1.2.3.4';
?column?
----------
t
(1 row)
-select '{1.2.3.4}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4}'::ltree[] @> '1.2.3.4';
?column?
----------
t
(1 row)
-select '{1.2.3.4.5}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4.5}'::ltree[] @> '1.2.3.4';
?column?
----------
f
(1 row)
-select '{1.3.3}'::ltree[] @> '1.2.3.4';
+SELECT '{1.3.3}'::ltree[] @> '1.2.3.4';
?column?
----------
f
(1 row)
-select '{5.67.8, 1.2.3}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.2.3}'::ltree[] @> '1.2.3.4';
?column?
----------
t
(1 row)
-select '{5.67.8, 1.2.3.4}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.2.3.4}'::ltree[] @> '1.2.3.4';
?column?
----------
t
(1 row)
-select '{5.67.8, 1.2.3.4.5}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.2.3.4.5}'::ltree[] @> '1.2.3.4';
?column?
----------
f
(1 row)
-select '{5.67.8, 1.3.3}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.3.3}'::ltree[] @> '1.2.3.4';
?column?
----------
f
(1 row)
-select '{1.2.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
?column?
----------
t
(1 row)
-select '{1.2.3.4, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4, 7.12.asd}'::ltree[] @> '1.2.3.4';
?column?
----------
t
(1 row)
-select '{1.2.3.4.5, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4.5, 7.12.asd}'::ltree[] @> '1.2.3.4';
?column?
----------
f
(1 row)
-select '{1.3.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.3.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
?column?
----------
f
(1 row)
-select '{ltree.asd, tree.awdfg}'::ltree[] @ 'tree & aWdfg@'::ltxtquery;
+SELECT '{ltree.asd, tree.awdfg}'::ltree[] @ 'tree & aWdfg@'::ltxtquery;
?column?
----------
t
(1 row)
-select '{j.k.l.m, g.b.c.d.e}'::ltree[] ~ 'A*@|g.b.c.d.e';
+SELECT '{j.k.l.m, g.b.c.d.e}'::ltree[] ~ 'A*@|g.b.c.d.e';
?column?
----------
t
(1 row)
--exractors
-select ('{3456,1.2.3.34}'::ltree[] ?@> '1.2.3.4') is null;
+SELECT ('{3456,1.2.3.34}'::ltree[] ?@> '1.2.3.4') is null;
?column?
----------
t
(1 row)
-select '{3456,1.2.3}'::ltree[] ?@> '1.2.3.4';
+SELECT '{3456,1.2.3}'::ltree[] ?@> '1.2.3.4';
?column?
----------
1.2.3
(1 row)
-select '{3456,1.2.3.4}'::ltree[] ?<@ '1.2.3';
+SELECT '{3456,1.2.3.4}'::ltree[] ?<@ '1.2.3';
?column?
----------
1.2.3.4
(1 row)
-select ('{3456,1.2.3.4}'::ltree[] ?<@ '1.2.5') is null;
+SELECT ('{3456,1.2.3.4}'::ltree[] ?<@ '1.2.5') is null;
?column?
----------
t
(1 row)
-select '{ltree.asd, tree.awdfg}'::ltree[] ?@ 'tree & aWdfg@'::ltxtquery;
+SELECT '{ltree.asd, tree.awdfg}'::ltree[] ?@ 'tree & aWdfg@'::ltxtquery;
?column?
------------
tree.awdfg
(1 row)
-select '{j.k.l.m, g.b.c.d.e}'::ltree[] ?~ 'A*@|g.b.c.d.e';
+SELECT '{j.k.l.m, g.b.c.d.e}'::ltree[] ?~ 'A*@|g.b.c.d.e';
?column?
-----------
g.b.c.d.e
(1 row)
-create table ltreetest (t ltree);
-\copy ltreetest from 'data/ltree.data'
-select * from ltreetest where t < '12.3' order by t asc;
+CREATE TABLE ltreetest (t ltree);
+\copy ltreetest FROM 'data/ltree.data'
+SELECT * FROM ltreetest WHERE t < '12.3' order by t asc;
t
----------------------------------
@@ -1130,7 +1130,7 @@ select * from ltreetest where t < '12.3' order by t asc;
12.29.26.18.4.21.28.8.13.3
(123 rows)
-select * from ltreetest where t <= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <= '12.3' order by t asc;
t
----------------------------------
@@ -1259,13 +1259,13 @@ select * from ltreetest where t <= '12.3' order by t asc;
12.3
(124 rows)
-select * from ltreetest where t = '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t = '12.3' order by t asc;
t
------
12.3
(1 row)
-select * from ltreetest where t >= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >= '12.3' order by t asc;
t
----------------------------------
12.3
@@ -2153,7 +2153,7 @@ select * from ltreetest where t >= '12.3' order by t asc;
9.9.13.9.14.27
(883 rows)
-select * from ltreetest where t > '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t > '12.3' order by t asc;
t
----------------------------------
12.4.10.17.4.10.23.3
@@ -3040,7 +3040,7 @@ select * from ltreetest where t > '12.3' order by t asc;
9.9.13.9.14.27
(882 rows)
-select * from ltreetest where t @> '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t @> '1.1.1' order by t asc;
t
-------
@@ -3049,7 +3049,7 @@ select * from ltreetest where t @> '1.1.1' order by t asc;
1.1.1
(4 rows)
-select * from ltreetest where t <@ '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t <@ '1.1.1' order by t asc;
t
-----------
1.1.1
@@ -3058,7 +3058,7 @@ select * from ltreetest where t <@ '1.1.1' order by t asc;
1.1.1.2.1
(4 rows)
-select * from ltreetest where t ~ '1.1.1.*' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '1.1.1.*' order by t asc;
t
-----------
1.1.1
@@ -3067,7 +3067,7 @@ select * from ltreetest where t ~ '1.1.1.*' order by t asc;
1.1.1.2.1
(4 rows)
-select * from ltreetest where t ~ '*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '*.1' order by t asc;
t
--------------------------------
1
@@ -3097,20 +3097,20 @@ select * from ltreetest where t ~ '*.1' order by t asc;
9.21.20.29.1
(25 rows)
-select * from ltreetest where t ~ '23.*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*.1' order by t asc;
t
-------------------------
23.28.1
23.3.32.21.5.14.10.17.1
(2 rows)
-select * from ltreetest where t ~ '23.*{1}.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*{1}.1' order by t asc;
t
---------
23.28.1
(1 row)
-select * from ltreetest where t @ '23 & 1' order by t asc;
+SELECT * FROM ltreetest WHERE t @ '23 & 1' order by t asc;
t
--------------------------------
1.10.23.25.5.11
@@ -3156,7 +3156,7 @@ select * from ltreetest where t @ '23 & 1' order by t asc;
create unique index tstidx on ltreetest (t);
set enable_seqscan=off;
-select * from ltreetest where t < '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t < '12.3' order by t asc;
t
----------------------------------
@@ -3284,7 +3284,7 @@ select * from ltreetest where t < '12.3' order by t asc;
12.29.26.18.4.21.28.8.13.3
(123 rows)
-select * from ltreetest where t <= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <= '12.3' order by t asc;
t
----------------------------------
@@ -3413,13 +3413,13 @@ select * from ltreetest where t <= '12.3' order by t asc;
12.3
(124 rows)
-select * from ltreetest where t = '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t = '12.3' order by t asc;
t
------
12.3
(1 row)
-select * from ltreetest where t >= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >= '12.3' order by t asc;
t
----------------------------------
12.3
@@ -4307,7 +4307,7 @@ select * from ltreetest where t >= '12.3' order by t asc;
9.9.13.9.14.27
(883 rows)
-select * from ltreetest where t > '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t > '12.3' order by t asc;
t
----------------------------------
12.4.10.17.4.10.23.3
@@ -5197,7 +5197,7 @@ select * from ltreetest where t > '12.3' order by t asc;
drop index tstidx;
create index tstidx on ltreetest using gist (t);
set enable_seqscan=off;
-select * from ltreetest where t < '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t < '12.3' order by t asc;
t
----------------------------------
@@ -5325,7 +5325,7 @@ select * from ltreetest where t < '12.3' order by t asc;
12.29.26.18.4.21.28.8.13.3
(123 rows)
-select * from ltreetest where t <= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <= '12.3' order by t asc;
t
----------------------------------
@@ -5454,13 +5454,13 @@ select * from ltreetest where t <= '12.3' order by t asc;
12.3
(124 rows)
-select * from ltreetest where t = '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t = '12.3' order by t asc;
t
------
12.3
(1 row)
-select * from ltreetest where t >= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >= '12.3' order by t asc;
t
----------------------------------
12.3
@@ -6348,7 +6348,7 @@ select * from ltreetest where t >= '12.3' order by t asc;
9.9.13.9.14.27
(883 rows)
-select * from ltreetest where t > '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t > '12.3' order by t asc;
t
----------------------------------
12.4.10.17.4.10.23.3
@@ -7235,7 +7235,7 @@ select * from ltreetest where t > '12.3' order by t asc;
9.9.13.9.14.27
(882 rows)
-select * from ltreetest where t @> '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t @> '1.1.1' order by t asc;
t
-------
@@ -7244,7 +7244,7 @@ select * from ltreetest where t @> '1.1.1' order by t asc;
1.1.1
(4 rows)
-select * from ltreetest where t <@ '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t <@ '1.1.1' order by t asc;
t
-----------
1.1.1
@@ -7253,7 +7253,7 @@ select * from ltreetest where t <@ '1.1.1' order by t asc;
1.1.1.2.1
(4 rows)
-select * from ltreetest where t ~ '1.1.1.*' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '1.1.1.*' order by t asc;
t
-----------
1.1.1
@@ -7262,7 +7262,7 @@ select * from ltreetest where t ~ '1.1.1.*' order by t asc;
1.1.1.2.1
(4 rows)
-select * from ltreetest where t ~ '*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '*.1' order by t asc;
t
--------------------------------
1
@@ -7292,20 +7292,20 @@ select * from ltreetest where t ~ '*.1' order by t asc;
9.21.20.29.1
(25 rows)
-select * from ltreetest where t ~ '23.*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*.1' order by t asc;
t
-------------------------
23.28.1
23.3.32.21.5.14.10.17.1
(2 rows)
-select * from ltreetest where t ~ '23.*{1}.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*{1}.1' order by t asc;
t
---------
23.28.1
(1 row)
-select * from ltreetest where t @ '23 & 1' order by t asc;
+SELECT * FROM ltreetest WHERE t @ '23 & 1' order by t asc;
t
--------------------------------
1.10.23.25.5.11
@@ -7350,44 +7350,44 @@ select * from ltreetest where t @ '23 & 1' order by t asc;
(39 rows)
create table _ltreetest (t ltree[]);
-\copy _ltreetest from 'data/_ltree.data'
-select count(*) from _ltreetest where t @> '1.1.1' ;
+\copy _ltreetest FROM 'data/_ltree.data'
+SELECT count(*) FROM _ltreetest WHERE t @> '1.1.1' ;
count
-------
15
(1 row)
-select count(*) from _ltreetest where t <@ '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t <@ '1.1.1' ;
count
-------
19
(1 row)
-select count(*) from _ltreetest where t ~ '1.1.1.*' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '1.1.1.*' ;
count
-------
19
(1 row)
-select count(*) from _ltreetest where t ~ '*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '*.1' ;
count
-------
83
(1 row)
-select count(*) from _ltreetest where t ~ '23.*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*.1' ;
count
-------
10
(1 row)
-select count(*) from _ltreetest where t ~ '23.*{1}.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*{1}.1' ;
count
-------
5
(1 row)
-select count(*) from _ltreetest where t @ '23 & 1' ;
+SELECT count(*) FROM _ltreetest WHERE t @ '23 & 1' ;
count
-------
147
@@ -7395,43 +7395,43 @@ select count(*) from _ltreetest where t @ '23 & 1' ;
create index _tstidx on _ltreetest using gist (t);
set enable_seqscan=off;
-select count(*) from _ltreetest where t @> '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t @> '1.1.1' ;
count
-------
15
(1 row)
-select count(*) from _ltreetest where t <@ '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t <@ '1.1.1' ;
count
-------
19
(1 row)
-select count(*) from _ltreetest where t ~ '1.1.1.*' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '1.1.1.*' ;
count
-------
19
(1 row)
-select count(*) from _ltreetest where t ~ '*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '*.1' ;
count
-------
83
(1 row)
-select count(*) from _ltreetest where t ~ '23.*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*.1' ;
count
-------
10
(1 row)
-select count(*) from _ltreetest where t ~ '23.*{1}.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*{1}.1' ;
count
-------
5
(1 row)
-select count(*) from _ltreetest where t @ '23 & 1' ;
+SELECT count(*) FROM _ltreetest WHERE t @ '23 & 1' ;
count
-------
147
diff --git a/contrib/ltree/ltree.sql.in b/contrib/ltree/ltree.sql.in
index ad7f61472b..eae1454a9a 100644
--- a/contrib/ltree/ltree.sql.in
+++ b/contrib/ltree/ltree.sql.in
@@ -1,23 +1,23 @@
-BEGIN;
-
-- Adjust this setting to control where the objects get created.
SET search_path = public;
+SET autocommit TO 'on';
+
CREATE FUNCTION ltree_in(cstring)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION ltree_out(ltree)
RETURNS cstring
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
CREATE TYPE ltree (
-internallength = -1,
-input = ltree_in,
-output = ltree_out,
-storage = extended
+ INTERNALLENGTH = -1,
+ INPUT = ltree_in,
+ OUTPUT = ltree_out,
+ STORAGE = extended
);
@@ -25,74 +25,99 @@ storage = extended
CREATE FUNCTION ltree_cmp(ltree,ltree)
RETURNS int4
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ltree_lt(ltree,ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ltree_le(ltree,ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ltree_eq(ltree,ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ltree_ge(ltree,ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ltree_gt(ltree,ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ltree_ne(ltree,ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE OPERATOR < (
- LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_lt,
- COMMUTATOR = '>', NEGATOR = '>=',
- RESTRICT = contsel, JOIN = contjoinsel
+ 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
+ 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
+ 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
+ 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 = '<'
+ 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
+ LEFTARG = ltree,
+ RIGHTARG = ltree,
+ PROCEDURE = ltree_ne,
+ COMMUTATOR = '<>',
+ NEGATOR = '=',
+ RESTRICT = neqsel,
+ JOIN = neqjoinsel
);
--util functions
@@ -100,122 +125,140 @@ CREATE OPERATOR <> (
CREATE FUNCTION subltree(ltree,int4,int4)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION subpath(ltree,int4,int4)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION subpath(ltree,int4)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION nlevel(ltree)
RETURNS int4
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION lca(_ltree)
RETURNS ltree
AS 'MODULE_PATHNAME','_lca'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION lca(ltree,ltree)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION lca(ltree,ltree,ltree)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION lca(ltree,ltree,ltree,ltree)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree,ltree)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree,ltree,ltree)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ltree_isparent(ltree,ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ltree_risparent(ltree,ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ltree_addltree(ltree,ltree)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ltree_addtext(ltree,text)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ltree_textadd(text,ltree)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE OPERATOR @> (
- LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_isparent,
+ LEFTARG = ltree,
+ RIGHTARG = ltree,
+ PROCEDURE = ltree_isparent,
COMMUTATOR = '<@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ^@> (
- LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_isparent,
+ LEFTARG = ltree,
+ RIGHTARG = ltree,
+ PROCEDURE = ltree_isparent,
COMMUTATOR = '^<@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR <@ (
- LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_risparent,
+ LEFTARG = ltree,
+ RIGHTARG = ltree,
+ PROCEDURE = ltree_risparent,
COMMUTATOR = '@>',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ^<@ (
- LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_risparent,
+ LEFTARG = ltree,
+ RIGHTARG = ltree,
+ PROCEDURE = ltree_risparent,
COMMUTATOR = '^@>',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR || (
- LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_addltree
+ LEFTARG = ltree,
+ RIGHTARG = ltree,
+ PROCEDURE = ltree_addltree
);
CREATE OPERATOR || (
- LEFTARG = ltree, RIGHTARG = text, PROCEDURE = ltree_addtext
+ LEFTARG = ltree,
+ RIGHTARG = text,
+ PROCEDURE = ltree_addtext
);
CREATE OPERATOR || (
- LEFTARG = text, RIGHTARG = ltree, PROCEDURE = ltree_textadd
+ LEFTARG = text,
+ RIGHTARG = ltree,
+ PROCEDURE = ltree_textadd
);
@@ -235,135 +278,166 @@ CREATE OPERATOR CLASS ltree_ops
CREATE FUNCTION lquery_in(cstring)
RETURNS lquery
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION lquery_out(lquery)
RETURNS cstring
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
CREATE TYPE lquery (
-internallength = -1,
-input = lquery_in,
-output = lquery_out,
-storage = extended
+ INTERNALLENGTH = -1,
+ INPUT = lquery_in,
+ OUTPUT = lquery_out,
+ STORAGE = extended
);
CREATE FUNCTION ltq_regex(ltree,lquery)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ltq_rregex(lquery,ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE OPERATOR ~ (
- LEFTARG = ltree, RIGHTARG = lquery, PROCEDURE = ltq_regex,
+ LEFTARG = ltree,
+ RIGHTARG = lquery,
+ PROCEDURE = ltq_regex,
COMMUTATOR = '~',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ~ (
- LEFTARG = lquery, RIGHTARG = ltree, PROCEDURE = ltq_rregex,
+ LEFTARG = lquery,
+ RIGHTARG = ltree,
+ PROCEDURE = ltq_rregex,
COMMUTATOR = '~',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
--not-indexed
CREATE OPERATOR ^~ (
- LEFTARG = ltree, RIGHTARG = lquery, PROCEDURE = ltq_regex,
+ LEFTARG = ltree,
+ RIGHTARG = lquery,
+ PROCEDURE = ltq_regex,
COMMUTATOR = '^~',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ^~ (
- LEFTARG = lquery, RIGHTARG = ltree, PROCEDURE = ltq_rregex,
+ LEFTARG = lquery,
+ RIGHTARG = ltree,
+ PROCEDURE = ltq_rregex,
COMMUTATOR = '^~',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE FUNCTION ltxtq_in(cstring)
RETURNS ltxtquery
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION ltxtq_out(ltxtquery)
RETURNS cstring
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
CREATE TYPE ltxtquery (
-internallength = -1,
-input = ltxtq_in,
-output = ltxtq_out,
-storage = extended
+ INTERNALLENGTH = -1,
+ INPUT = ltxtq_in,
+ OUTPUT = ltxtq_out,
+ STORAGE = extended
);
--- operations with ltxtquery
+-- operations WITH ltxtquery
CREATE FUNCTION ltxtq_exec(ltree, ltxtquery)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict, iscachable);
+LANGUAGE 'C' WITH (isstrict, iscachable);
CREATE FUNCTION ltxtq_rexec(ltxtquery, ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict, iscachable);
+LANGUAGE 'C' WITH (isstrict, iscachable);
CREATE OPERATOR @ (
- LEFTARG = ltree, RIGHTARG = ltxtquery, PROCEDURE = ltxtq_exec,
+ LEFTARG = ltree,
+ RIGHTARG = ltxtquery,
+ PROCEDURE = ltxtq_exec,
COMMUTATOR = '@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR @ (
- LEFTARG = ltxtquery, RIGHTARG = ltree, PROCEDURE = ltxtq_rexec,
+ LEFTARG = ltxtquery,
+ RIGHTARG = ltree,
+ PROCEDURE = ltxtq_rexec,
COMMUTATOR = '@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
--not-indexed
CREATE OPERATOR ^@ (
- LEFTARG = ltree, RIGHTARG = ltxtquery, PROCEDURE = ltxtq_exec,
+ LEFTARG = ltree,
+ RIGHTARG = ltxtquery,
+ PROCEDURE = ltxtq_exec,
COMMUTATOR = '^@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ^@ (
- LEFTARG = ltxtquery, RIGHTARG = ltree, PROCEDURE = ltxtq_rexec,
+ LEFTARG = ltxtquery,
+ RIGHTARG = ltree,
+ PROCEDURE = ltxtq_rexec,
COMMUTATOR = '^@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
--GiST support for ltree
CREATE FUNCTION ltree_gist_in(cstring)
RETURNS ltree_gist
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
-
+LANGUAGE 'C' WITH (isstrict);
+
CREATE FUNCTION ltree_gist_out(ltree_gist)
RETURNS cstring
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
-
+LANGUAGE 'C' WITH (isstrict);
+
CREATE TYPE ltree_gist (
internallength = -1,
input = ltree_gist_in,
output = ltree_gist_out,
storage = plain
-);
-
-
-create function ltree_consistent(internal,internal,int2) returns bool as 'MODULE_PATHNAME' language 'C';
-create function ltree_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
-create function ltree_decompress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
-create function ltree_penalty(internal,internal,internal) returns internal as 'MODULE_PATHNAME' language 'C' with(isstrict);
-create function ltree_picksplit(internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
-create function ltree_union(bytea, internal) returns int4 as 'MODULE_PATHNAME' language 'C';
-create function ltree_same(internal, internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
+);
+
+
+CREATE FUNCTION ltree_consistent(internal,internal,int2)
+RETURNS bool as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION ltree_compress(internal)
+RETURNS internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION ltree_decompress(internal)
+RETURNS internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION ltree_penalty(internal,internal,internal)
+RETURNS internal as 'MODULE_PATHNAME' language 'C' with(isstrict);
+CREATE FUNCTION ltree_picksplit(internal, internal)
+RETURNS internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION ltree_union(bytea, internal)
+RETURNS int4 as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION ltree_same(internal, internal, internal)
+RETURNS internal as 'MODULE_PATHNAME' language 'C';
CREATE OPERATOR CLASS gist_ltree_ops
DEFAULT FOR TYPE ltree USING gist AS
@@ -393,185 +467,259 @@ CREATE OPERATOR CLASS gist_ltree_ops
CREATE FUNCTION _ltree_isparent(_ltree,ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION _ltree_r_isparent(ltree,_ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION _ltree_risparent(_ltree,ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION _ltree_r_risparent(ltree,_ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION _ltq_regex(_ltree,lquery)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION _ltq_rregex(lquery,_ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION _ltxtq_exec(_ltree, ltxtquery)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict, iscachable);
+LANGUAGE 'C' WITH (isstrict, iscachable);
CREATE FUNCTION _ltxtq_rexec(ltxtquery, _ltree)
RETURNS bool
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict, iscachable);
+LANGUAGE 'C' WITH (isstrict, iscachable);
CREATE OPERATOR @> (
- LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_isparent,
+ LEFTARG = _ltree,
+ RIGHTARG = ltree,
+ PROCEDURE = _ltree_isparent,
COMMUTATOR = '<@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR <@ (
- LEFTARG = ltree, RIGHTARG = _ltree, PROCEDURE = _ltree_r_isparent,
+ LEFTARG = ltree,
+ RIGHTARG = _ltree,
+ PROCEDURE = _ltree_r_isparent,
COMMUTATOR = '@>',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR <@ (
- LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_risparent,
+ LEFTARG = _ltree,
+ RIGHTARG = ltree,
+ PROCEDURE = _ltree_risparent,
COMMUTATOR = '@>',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR @> (
- LEFTARG = ltree, RIGHTARG = _ltree, PROCEDURE = _ltree_r_risparent,
+ LEFTARG = ltree,
+ RIGHTARG = _ltree,
+ PROCEDURE = _ltree_r_risparent,
COMMUTATOR = '<@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ~ (
- LEFTARG = _ltree, RIGHTARG = lquery, PROCEDURE = _ltq_regex,
+ LEFTARG = _ltree,
+ RIGHTARG = lquery,
+ PROCEDURE = _ltq_regex,
COMMUTATOR = '~',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ~ (
- LEFTARG = lquery, RIGHTARG = _ltree, PROCEDURE = _ltq_rregex,
+ LEFTARG = lquery,
+ RIGHTARG = _ltree,
+ PROCEDURE = _ltq_rregex,
COMMUTATOR = '~',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR @ (
- LEFTARG = _ltree, RIGHTARG = ltxtquery, PROCEDURE = _ltxtq_exec,
+ LEFTARG = _ltree,
+ RIGHTARG = ltxtquery,
+ PROCEDURE = _ltxtq_exec,
COMMUTATOR = '@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR @ (
- LEFTARG = ltxtquery, RIGHTARG = _ltree, PROCEDURE = _ltxtq_rexec,
+ LEFTARG = ltxtquery,
+ RIGHTARG = _ltree,
+ PROCEDURE = _ltxtq_rexec,
COMMUTATOR = '@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
--not indexed
CREATE OPERATOR ^@> (
- LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_isparent,
+ LEFTARG = _ltree,
+ RIGHTARG = ltree,
+ PROCEDURE = _ltree_isparent,
COMMUTATOR = '^<@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ^<@ (
- LEFTARG = ltree, RIGHTARG = _ltree, PROCEDURE = _ltree_r_isparent,
+ LEFTARG = ltree,
+ RIGHTARG = _ltree,
+ PROCEDURE = _ltree_r_isparent,
COMMUTATOR = '^@>',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ^<@ (
- LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_risparent,
+ LEFTARG = _ltree,
+ RIGHTARG = ltree,
+ PROCEDURE = _ltree_risparent,
COMMUTATOR = '^@>',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ^@> (
- LEFTARG = ltree, RIGHTARG = _ltree, PROCEDURE = _ltree_r_risparent,
+ LEFTARG = ltree,
+ RIGHTARG = _ltree,
+ PROCEDURE = _ltree_r_risparent,
COMMUTATOR = '^<@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ^~ (
- LEFTARG = _ltree, RIGHTARG = lquery, PROCEDURE = _ltq_regex,
+ LEFTARG = _ltree,
+ RIGHTARG = lquery,
+ PROCEDURE = _ltq_regex,
COMMUTATOR = '^~',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ^~ (
- LEFTARG = lquery, RIGHTARG = _ltree, PROCEDURE = _ltq_rregex,
+ LEFTARG = lquery,
+ RIGHTARG = _ltree,
+ PROCEDURE = _ltq_rregex,
COMMUTATOR = '^~',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ^@ (
- LEFTARG = _ltree, RIGHTARG = ltxtquery, PROCEDURE = _ltxtq_exec,
+ LEFTARG = _ltree,
+ RIGHTARG = ltxtquery,
+ PROCEDURE = _ltxtq_exec,
COMMUTATOR = '^@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
CREATE OPERATOR ^@ (
- LEFTARG = ltxtquery, RIGHTARG = _ltree, PROCEDURE = _ltxtq_rexec,
+ LEFTARG = ltxtquery,
+ RIGHTARG = _ltree,
+ PROCEDURE = _ltxtq_rexec,
COMMUTATOR = '^@',
- RESTRICT = contsel, JOIN = contjoinsel
+ RESTRICT = contsel,
+ JOIN = contjoinsel
);
--extractors
CREATE FUNCTION _ltree_extract_isparent(_ltree,ltree)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE OPERATOR ?@> (
- LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_extract_isparent
+ LEFTARG = _ltree,
+ RIGHTARG = ltree,
+ PROCEDURE = _ltree_extract_isparent
);
CREATE FUNCTION _ltree_extract_risparent(_ltree,ltree)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE OPERATOR ?<@ (
- LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_extract_risparent
+ LEFTARG = _ltree,
+ RIGHTARG = ltree,
+ PROCEDURE = _ltree_extract_risparent
);
CREATE FUNCTION _ltq_extract_regex(_ltree,lquery)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE OPERATOR ?~ (
- LEFTARG = _ltree, RIGHTARG = lquery, PROCEDURE = _ltq_extract_regex
+ LEFTARG = _ltree,
+ RIGHTARG = lquery,
+ PROCEDURE = _ltq_extract_regex
);
CREATE FUNCTION _ltxtq_extract_exec(_ltree,ltxtquery)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE OPERATOR ?@ (
- LEFTARG = _ltree, RIGHTARG = ltxtquery, PROCEDURE = _ltxtq_extract_exec
+ LEFTARG = _ltree,
+ RIGHTARG = ltxtquery,
+ PROCEDURE = _ltxtq_extract_exec
);
--GiST support for ltree[]
-create function _ltree_consistent(internal,internal,int2) returns bool as 'MODULE_PATHNAME' language 'C';
-create function _ltree_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
-create function _ltree_penalty(internal,internal,internal) returns internal as 'MODULE_PATHNAME' language 'C' with(isstrict);
-create function _ltree_picksplit(internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
-create function _ltree_union(bytea, internal) returns int4 as 'MODULE_PATHNAME' language 'C';
-create function _ltree_same(internal, internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION _ltree_consistent(internal,internal,int2)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+CREATE FUNCTION _ltree_compress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+CREATE FUNCTION _ltree_penalty(internal,internal,internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH(isstrict);
+CREATE FUNCTION _ltree_picksplit(internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+CREATE FUNCTION _ltree_union(bytea, internal)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+CREATE FUNCTION _ltree_same(internal, internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
CREATE OPERATOR CLASS gist__ltree_ops
DEFAULT FOR TYPE _ltree USING gist AS
@@ -589,6 +737,3 @@ CREATE OPERATOR CLASS gist__ltree_ops
FUNCTION 6 _ltree_picksplit (internal, internal),
FUNCTION 7 _ltree_same (internal, internal, internal),
STORAGE ltree_gist;
-
-
-END;
diff --git a/contrib/ltree/ltreetest.sql b/contrib/ltree/ltreetest.sql
index 0dd6eaa63d..eea5c475ee 100644
--- a/contrib/ltree/ltreetest.sql
+++ b/contrib/ltree/ltreetest.sql
@@ -1,16 +1,16 @@
-create table test ( path ltree);
-insert into test values ('Top');
-insert into test values ('Top.Science');
-insert into test values ('Top.Science.Astronomy');
-insert into test values ('Top.Science.Astronomy.Astrophysics');
-insert into test values ('Top.Science.Astronomy.Cosmology');
-insert into test values ('Top.Hobbies');
-insert into test values ('Top.Hobbies.Amateurs_Astronomy');
-insert into test values ('Top.Collections');
-insert into test values ('Top.Collections.Pictures');
-insert into test values ('Top.Collections.Pictures.Astronomy');
-insert into test values ('Top.Collections.Pictures.Astronomy.Stars');
-insert into test values ('Top.Collections.Pictures.Astronomy.Galaxies');
-insert into test values ('Top.Collections.Pictures.Astronomy.Astronauts');
-create index path_gist_idx on test using gist(path);
-create index path_idx on test using btree(path);
+CREATE TABLE test ( path ltree);
+INSERT INTO test VALUES ('Top');
+INSERT INTO test VALUES ('Top.Science');
+INSERT INTO test VALUES ('Top.Science.Astronomy');
+INSERT INTO test VALUES ('Top.Science.Astronomy.Astrophysics');
+INSERT INTO test VALUES ('Top.Science.Astronomy.Cosmology');
+INSERT INTO test VALUES ('Top.Hobbies');
+INSERT INTO test VALUES ('Top.Hobbies.Amateurs_Astronomy');
+INSERT INTO test VALUES ('Top.Collections');
+INSERT INTO test VALUES ('Top.Collections.Pictures');
+INSERT INTO test VALUES ('Top.Collections.Pictures.Astronomy');
+INSERT INTO test VALUES ('Top.Collections.Pictures.Astronomy.Stars');
+INSERT INTO test VALUES ('Top.Collections.Pictures.Astronomy.Galaxies');
+INSERT INTO test VALUES ('Top.Collections.Pictures.Astronomy.Astronauts');
+CREATE INDEX path_gist_idx ON test USING gist(path);
+CREATE INDEX path_idx ON test USING btree(path);
diff --git a/contrib/ltree/sql/ltree.sql b/contrib/ltree/sql/ltree.sql
index 8da7e2841b..0d9defcca4 100644
--- a/contrib/ltree/sql/ltree.sql
+++ b/contrib/ltree/sql/ltree.sql
@@ -1,250 +1,252 @@
\set ECHO none
+SET autocommit TO 'on';
+
\i ltree.sql
\set ECHO all
-select ''::ltree;
-select '1'::ltree;
-select '1.2'::ltree;
-select '1.2._3'::ltree;
-
-select subltree('Top.Child1.Child2',1,2);
-select subpath('Top.Child1.Child2',1,2);
-select subpath('Top.Child1.Child2',-1,1);
-select subpath('Top.Child1.Child2',0,-2);
-select subpath('Top.Child1.Child2',0,-1);
-select subpath('Top.Child1.Child2',0,0);
-select subpath('Top.Child1.Child2',1,0);
-select subpath('Top.Child1.Child2',0);
-select subpath('Top.Child1.Child2',1);
-
-select 'Top.Child1.Child2'::ltree || 'Child3'::text;
-select 'Top.Child1.Child2'::ltree || 'Child3'::ltree;
-select 'Top_0'::ltree || 'Top.Child1.Child2'::ltree;
-select 'Top.Child1.Child2'::ltree || ''::ltree;
-select ''::ltree || 'Top.Child1.Child2'::ltree;
-
-select lca('{la.2.3,1.2.3.4.5.6,}') is null;
-select lca('{la.2.3,1.2.3.4.5.6}') is null;
-select lca('{1.la.2.3,1.2.3.4.5.6}');
-select lca('{1.2.3,1.2.3.4.5.6}');
-select lca('1.la.2.3','1.2.3.4.5.6');
-select lca('1.2.3','1.2.3.4.5.6');
-select lca('1.2.2.3','1.2.3.4.5.6');
-select lca('1.2.2.3','1.2.3.4.5.6','');
-select lca('1.2.2.3','1.2.3.4.5.6','2');
-select lca('1.2.2.3','1.2.3.4.5.6','1');
-
-
-select '1'::lquery;
-select '4|3|2'::lquery;
-select '1.2'::lquery;
-select '1.4|3|2'::lquery;
-select '1.0'::lquery;
-select '4|3|2.0'::lquery;
-select '1.2.0'::lquery;
-select '1.4|3|2.0'::lquery;
-select '1.*'::lquery;
-select '4|3|2.*'::lquery;
-select '1.2.*'::lquery;
-select '1.4|3|2.*'::lquery;
-select '*.1.*'::lquery;
-select '*.4|3|2.*'::lquery;
-select '*.1.2.*'::lquery;
-select '*.1.4|3|2.*'::lquery;
-select '1.*.4|3|2'::lquery;
-select '1.*.4|3|2.0'::lquery;
-select '1.*.4|3|2.*{1,4}'::lquery;
-select '1.*.4|3|2.*{,4}'::lquery;
-select '1.*.4|3|2.*{1,}'::lquery;
-select '1.*.4|3|2.*{1}'::lquery;
-select 'qwerty%@*.tu'::lquery;
-
-select nlevel('1.2.3.4');
-select '1.2'::ltree < '2.2'::ltree;
-select '1.2'::ltree <= '2.2'::ltree;
-select '2.2'::ltree = '2.2'::ltree;
-select '3.2'::ltree >= '2.2'::ltree;
-select '3.2'::ltree > '2.2'::ltree;
-
-select '1.2.3'::ltree @> '1.2.3.4'::ltree;
-select '1.2.3.4'::ltree @> '1.2.3.4'::ltree;
-select '1.2.3.4.5'::ltree @> '1.2.3.4'::ltree;
-select '1.3.3'::ltree @> '1.2.3.4'::ltree;
-
-select 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
-select 'a.b.c.d.e'::ltree ~ 'A.b.c.d.e';
-select 'a.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
-select 'aa.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
-select 'aa.b.c.d.e'::ltree ~ 'A*.b.c.d.e';
-select 'aa.b.c.d.e'::ltree ~ 'A*@.b.c.d.e';
-select 'aa.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
-select 'g.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
-select 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{3}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{4}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{,4}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,4}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,3}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,3}';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,4}';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,5}';
-select 'a.b.c.d.e'::ltree ~ '*{2,3}.e';
-select 'a.b.c.d.e'::ltree ~ '*{2,4}.e';
-select 'a.b.c.d.e'::ltree ~ '*{2,5}.e';
-select 'a.b.c.d.e'::ltree ~ '*.e';
-select 'a.b.c.d.e'::ltree ~ '*.e.*';
-select 'a.b.c.d.e'::ltree ~ '*.d.*';
-select 'a.b.c.d.e'::ltree ~ '*.a.*.d.*';
-select 'a.b.c.d.e'::ltree ~ '*.!d.*';
-select 'a.b.c.d.e'::ltree ~ '*.!d';
-select 'a.b.c.d.e'::ltree ~ '!d.*';
-select 'a.b.c.d.e'::ltree ~ '!a.*';
-select 'a.b.c.d.e'::ltree ~ '*.!e';
-select 'a.b.c.d.e'::ltree ~ '*.!e.*';
-select 'a.b.c.d.e'::ltree ~ 'a.*.!e';
-select 'a.b.c.d.e'::ltree ~ 'a.*.!d';
-select 'a.b.c.d.e'::ltree ~ 'a.*.!d.*';
-select 'a.b.c.d.e'::ltree ~ 'a.*.!f.*';
-select 'a.b.c.d.e'::ltree ~ '*.a.*.!f.*';
-select 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
-select 'a.b.c.d.e'::ltree ~ '*.a.!d.*';
-select 'a.b.c.d.e'::ltree ~ '*.a.!d';
-select 'a.b.c.d.e'::ltree ~ 'a.!d.*';
-select 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
-select 'a.b.c.d.e'::ltree ~ '*.!b.*';
-select 'a.b.c.d.e'::ltree ~ '*.!b.c.*';
-select 'a.b.c.d.e'::ltree ~ '*.!b.*.c.*';
-select 'a.b.c.d.e'::ltree ~ '!b.*.c.*';
-select 'a.b.c.d.e'::ltree ~ '!b.b.*';
-select 'a.b.c.d.e'::ltree ~ '!b.*.e';
-select 'a.b.c.d.e'::ltree ~ '!b.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '!b.*.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '!b.!c.*';
-select 'a.b.c.d.e'::ltree ~ '!b.*.!c.*';
-select 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*';
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*';
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*';
-select 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*';
-select 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*';
-select 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*';
-select 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*';
-
-select 'QWER_TY'::ltree ~ 'q%@*';
-select 'QWER_TY'::ltree ~ 'Q_t%@*';
-select 'QWER_GY'::ltree ~ 'q_t%@*';
+SELECT ''::ltree;
+SELECT '1'::ltree;
+SELECT '1.2'::ltree;
+SELECT '1.2._3'::ltree;
+
+SELECT subltree('Top.Child1.Child2',1,2);
+SELECT subpath('Top.Child1.Child2',1,2);
+SELECT subpath('Top.Child1.Child2',-1,1);
+SELECT subpath('Top.Child1.Child2',0,-2);
+SELECT subpath('Top.Child1.Child2',0,-1);
+SELECT subpath('Top.Child1.Child2',0,0);
+SELECT subpath('Top.Child1.Child2',1,0);
+SELECT subpath('Top.Child1.Child2',0);
+SELECT subpath('Top.Child1.Child2',1);
+
+SELECT 'Top.Child1.Child2'::ltree || 'Child3'::text;
+SELECT 'Top.Child1.Child2'::ltree || 'Child3'::ltree;
+SELECT 'Top_0'::ltree || 'Top.Child1.Child2'::ltree;
+SELECT 'Top.Child1.Child2'::ltree || ''::ltree;
+SELECT ''::ltree || 'Top.Child1.Child2'::ltree;
+
+SELECT lca('{la.2.3,1.2.3.4.5.6,}') IS NULL;
+SELECT lca('{la.2.3,1.2.3.4.5.6}') IS NULL;
+SELECT lca('{1.la.2.3,1.2.3.4.5.6}');
+SELECT lca('{1.2.3,1.2.3.4.5.6}');
+SELECT lca('1.la.2.3','1.2.3.4.5.6');
+SELECT lca('1.2.3','1.2.3.4.5.6');
+SELECT lca('1.2.2.3','1.2.3.4.5.6');
+SELECT lca('1.2.2.3','1.2.3.4.5.6','');
+SELECT lca('1.2.2.3','1.2.3.4.5.6','2');
+SELECT lca('1.2.2.3','1.2.3.4.5.6','1');
+
+
+SELECT '1'::lquery;
+SELECT '4|3|2'::lquery;
+SELECT '1.2'::lquery;
+SELECT '1.4|3|2'::lquery;
+SELECT '1.0'::lquery;
+SELECT '4|3|2.0'::lquery;
+SELECT '1.2.0'::lquery;
+SELECT '1.4|3|2.0'::lquery;
+SELECT '1.*'::lquery;
+SELECT '4|3|2.*'::lquery;
+SELECT '1.2.*'::lquery;
+SELECT '1.4|3|2.*'::lquery;
+SELECT '*.1.*'::lquery;
+SELECT '*.4|3|2.*'::lquery;
+SELECT '*.1.2.*'::lquery;
+SELECT '*.1.4|3|2.*'::lquery;
+SELECT '1.*.4|3|2'::lquery;
+SELECT '1.*.4|3|2.0'::lquery;
+SELECT '1.*.4|3|2.*{1,4}'::lquery;
+SELECT '1.*.4|3|2.*{,4}'::lquery;
+SELECT '1.*.4|3|2.*{1,}'::lquery;
+SELECT '1.*.4|3|2.*{1}'::lquery;
+SELECT 'qwerty%@*.tu'::lquery;
+
+SELECT nlevel('1.2.3.4');
+SELECT '1.2'::ltree < '2.2'::ltree;
+SELECT '1.2'::ltree <= '2.2'::ltree;
+SELECT '2.2'::ltree = '2.2'::ltree;
+SELECT '3.2'::ltree >= '2.2'::ltree;
+SELECT '3.2'::ltree > '2.2'::ltree;
+
+SELECT '1.2.3'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.2.3.4'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.2.3.4.5'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.3.3'::ltree @> '1.2.3.4'::ltree;
+
+SELECT 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'A.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A*.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A*@.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
+SELECT 'g.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{3}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{,4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,3}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,3}';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,4}';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,5}';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2,3}.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2,4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2,5}.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.e.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!d';
+SELECT 'a.b.c.d.e'::ltree ~ '!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!a.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!e.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!d';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!f.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.!f.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.!d';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*.c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.b.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*';
+
+SELECT 'QWER_TY'::ltree ~ 'q%@*';
+SELECT 'QWER_TY'::ltree ~ 'Q_t%@*';
+SELECT 'QWER_GY'::ltree ~ 'q_t%@*';
--ltxtquery
-select '!tree & aWdf@*'::ltxtquery;
-select 'tree & aw_qw%*'::ltxtquery;
-select 'ltree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
-select 'tree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
-select 'tree.awdfg'::ltree @ '!tree | aWdf@*'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree | aWdf@*'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree & aWdf@*'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree & aWdf@'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree & aWdf*'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree & aWdf'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree & awdf*'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree & aWdfg@'::ltxtquery;
-select 'tree.awdfg_qwerty'::ltree @ 'tree & aw_qw%*'::ltxtquery;
-select 'tree.awdfg_qwerty'::ltree @ 'tree & aw_rw%*'::ltxtquery;
+SELECT '!tree & aWdf@*'::ltxtquery;
+SELECT 'tree & aw_qw%*'::ltxtquery;
+SELECT 'ltree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ '!tree | aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree | aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf@'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & awdf*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdfg@'::ltxtquery;
+SELECT 'tree.awdfg_qwerty'::ltree @ 'tree & aw_qw%*'::ltxtquery;
+SELECT 'tree.awdfg_qwerty'::ltree @ 'tree & aw_rw%*'::ltxtquery;
--arrays
-select '{1.2.3}'::ltree[] @> '1.2.3.4';
-select '{1.2.3.4}'::ltree[] @> '1.2.3.4';
-select '{1.2.3.4.5}'::ltree[] @> '1.2.3.4';
-select '{1.3.3}'::ltree[] @> '1.2.3.4';
-select '{5.67.8, 1.2.3}'::ltree[] @> '1.2.3.4';
-select '{5.67.8, 1.2.3.4}'::ltree[] @> '1.2.3.4';
-select '{5.67.8, 1.2.3.4.5}'::ltree[] @> '1.2.3.4';
-select '{5.67.8, 1.3.3}'::ltree[] @> '1.2.3.4';
-select '{1.2.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
-select '{1.2.3.4, 7.12.asd}'::ltree[] @> '1.2.3.4';
-select '{1.2.3.4.5, 7.12.asd}'::ltree[] @> '1.2.3.4';
-select '{1.3.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
-select '{ltree.asd, tree.awdfg}'::ltree[] @ 'tree & aWdfg@'::ltxtquery;
-select '{j.k.l.m, g.b.c.d.e}'::ltree[] ~ 'A*@|g.b.c.d.e';
+SELECT '{1.2.3}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4.5}'::ltree[] @> '1.2.3.4';
+SELECT '{1.3.3}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.2.3}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.2.3.4}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.2.3.4.5}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.3.3}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4.5, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.3.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{ltree.asd, tree.awdfg}'::ltree[] @ 'tree & aWdfg@'::ltxtquery;
+SELECT '{j.k.l.m, g.b.c.d.e}'::ltree[] ~ 'A*@|g.b.c.d.e';
--exractors
-select ('{3456,1.2.3.34}'::ltree[] ?@> '1.2.3.4') is null;
-select '{3456,1.2.3}'::ltree[] ?@> '1.2.3.4';
-select '{3456,1.2.3.4}'::ltree[] ?<@ '1.2.3';
-select ('{3456,1.2.3.4}'::ltree[] ?<@ '1.2.5') is null;
-select '{ltree.asd, tree.awdfg}'::ltree[] ?@ 'tree & aWdfg@'::ltxtquery;
-select '{j.k.l.m, g.b.c.d.e}'::ltree[] ?~ 'A*@|g.b.c.d.e';
-
-create table ltreetest (t ltree);
-\copy ltreetest from 'data/ltree.data'
-
-select * from ltreetest where t < '12.3' order by t asc;
-select * from ltreetest where t <= '12.3' order by t asc;
-select * from ltreetest where t = '12.3' order by t asc;
-select * from ltreetest where t >= '12.3' order by t asc;
-select * from ltreetest where t > '12.3' order by t asc;
-select * from ltreetest where t @> '1.1.1' order by t asc;
-select * from ltreetest where t <@ '1.1.1' order by t asc;
-select * from ltreetest where t ~ '1.1.1.*' order by t asc;
-select * from ltreetest where t ~ '*.1' order by t asc;
-select * from ltreetest where t ~ '23.*.1' order by t asc;
-select * from ltreetest where t ~ '23.*{1}.1' order by t asc;
-select * from ltreetest where t @ '23 & 1' order by t asc;
+SELECT ('{3456,1.2.3.34}'::ltree[] ?@> '1.2.3.4') is null;
+SELECT '{3456,1.2.3}'::ltree[] ?@> '1.2.3.4';
+SELECT '{3456,1.2.3.4}'::ltree[] ?<@ '1.2.3';
+SELECT ('{3456,1.2.3.4}'::ltree[] ?<@ '1.2.5') is null;
+SELECT '{ltree.asd, tree.awdfg}'::ltree[] ?@ 'tree & aWdfg@'::ltxtquery;
+SELECT '{j.k.l.m, g.b.c.d.e}'::ltree[] ?~ 'A*@|g.b.c.d.e';
+
+CREATE TABLE ltreetest (t ltree);
+\copy ltreetest FROM 'data/ltree.data'
+
+SELECT * FROM ltreetest WHERE t < '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t = '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t > '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t @> '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t <@ '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '1.1.1.*' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*{1}.1' order by t asc;
+SELECT * FROM ltreetest WHERE t @ '23 & 1' order by t asc;
create unique index tstidx on ltreetest (t);
set enable_seqscan=off;
-select * from ltreetest where t < '12.3' order by t asc;
-select * from ltreetest where t <= '12.3' order by t asc;
-select * from ltreetest where t = '12.3' order by t asc;
-select * from ltreetest where t >= '12.3' order by t asc;
-select * from ltreetest where t > '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t < '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t = '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t > '12.3' order by t asc;
drop index tstidx;
create index tstidx on ltreetest using gist (t);
set enable_seqscan=off;
-select * from ltreetest where t < '12.3' order by t asc;
-select * from ltreetest where t <= '12.3' order by t asc;
-select * from ltreetest where t = '12.3' order by t asc;
-select * from ltreetest where t >= '12.3' order by t asc;
-select * from ltreetest where t > '12.3' order by t asc;
-select * from ltreetest where t @> '1.1.1' order by t asc;
-select * from ltreetest where t <@ '1.1.1' order by t asc;
-select * from ltreetest where t ~ '1.1.1.*' order by t asc;
-select * from ltreetest where t ~ '*.1' order by t asc;
-select * from ltreetest where t ~ '23.*.1' order by t asc;
-select * from ltreetest where t ~ '23.*{1}.1' order by t asc;
-select * from ltreetest where t @ '23 & 1' order by t asc;
+SELECT * FROM ltreetest WHERE t < '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t = '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t > '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t @> '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t <@ '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '1.1.1.*' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*{1}.1' order by t asc;
+SELECT * FROM ltreetest WHERE t @ '23 & 1' order by t asc;
create table _ltreetest (t ltree[]);
-\copy _ltreetest from 'data/_ltree.data'
+\copy _ltreetest FROM 'data/_ltree.data'
-select count(*) from _ltreetest where t @> '1.1.1' ;
-select count(*) from _ltreetest where t <@ '1.1.1' ;
-select count(*) from _ltreetest where t ~ '1.1.1.*' ;
-select count(*) from _ltreetest where t ~ '*.1' ;
-select count(*) from _ltreetest where t ~ '23.*.1' ;
-select count(*) from _ltreetest where t ~ '23.*{1}.1' ;
-select count(*) from _ltreetest where t @ '23 & 1' ;
+SELECT count(*) FROM _ltreetest WHERE t @> '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t <@ '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '1.1.1.*' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*{1}.1' ;
+SELECT count(*) FROM _ltreetest WHERE t @ '23 & 1' ;
create index _tstidx on _ltreetest using gist (t);
set enable_seqscan=off;
-select count(*) from _ltreetest where t @> '1.1.1' ;
-select count(*) from _ltreetest where t <@ '1.1.1' ;
-select count(*) from _ltreetest where t ~ '1.1.1.*' ;
-select count(*) from _ltreetest where t ~ '*.1' ;
-select count(*) from _ltreetest where t ~ '23.*.1' ;
-select count(*) from _ltreetest where t ~ '23.*{1}.1' ;
-select count(*) from _ltreetest where t @ '23 & 1' ;
+SELECT count(*) FROM _ltreetest WHERE t @> '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t <@ '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '1.1.1.*' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*{1}.1' ;
+SELECT count(*) FROM _ltreetest WHERE t @ '23 & 1' ;