SET search_path TO xml;
-- Write functions using the descendant axe...
create table a (i int, data doc, targ_path xml.path, new_node node, add_mode add_mode);
insert into a values
(1, '', '/root//x/b', '', 'r'),
(2, '', '/root//x/b', '', 'b'),
(3, '', '/root//x/b', '', 'a'),
(4, '', '/root//x//b', '', 'r'),
(5, '', '/root//x//b', '', 'a'),
(6, '', '//x//b', '', 'r'),
(7, '', '//x//b', '', 'a'),
(8, '', '/root//x/b', '', 'i');
-- Specifically, addition must not take place multiple times for the same node.
insert into a values
(9, '', '/root//x//b', '', 'b'),
(8, '', '/root//x//b', '', 'i'),
(10, '', '//x//b', '', 'b'),
(11, '', '//x//b', '', 'i'),
(12, '', '/root//x//b', '', 'i');
select node_debug_print(data), targ_path, add_mode, new_node, node_debug_print(xml.add(data, targ_path, new_node, add_mode))
from a
order by a.i;
node_debug_print | targ_path | add_mode | new_node | node_debug_print
-------------------------------------------+-------------+----------+----------+-------------------------------------------
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | r | | root (abs: 48 , rel: 0 , size: 58) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 40 , rel: 8 , size: 48) +
b (abs: 36 , rel: 40 , size: 44) +| | | | new (abs: 0 , rel: 40 , size: 8) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | a (abs: 32 , rel: 8 , size: 32) +
x (abs: 28 , rel: 8 , size: 25) +| | | | b (abs: 18 , rel: 14 , size: 17) +
b (abs: 20 , rel: 8 , size: 17) +| | | | test3 (abs: 8 , rel: 10 , size: 10) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | d (abs: 26 , rel: 6 , size: 6) +
a (abs: 68 , rel: 8 , size: 32) +| | | |
b (abs: 54 , rel: 14 , size: 17) +| | | |
test3 (abs: 44 , rel: 10 , size: 10) +| | | |
d (abs: 62 , rel: 6 , size: 6) +| | | |
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | b | | root (abs: 92 , rel: 0 , size: 102) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 84 , rel: 8 , size: 92) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 44 , rel: 40 , size: 52) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 44 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 36 , rel: 8 , size: 34) +
b (abs: 20 , rel: 8 , size: 17) +| | | | new (abs: 10 , rel: 26 , size: 8) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | b (abs: 28 , rel: 8 , size: 17) +
a (abs: 68 , rel: 8 , size: 32) +| | | | test2 (abs: 18 , rel: 10 , size: 10)+
b (abs: 54 , rel: 14 , size: 17) +| | | | a (abs: 76 , rel: 8 , size: 32) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | b (abs: 62 , rel: 14 , size: 17) +
d (abs: 62 , rel: 6 , size: 6) +| | | | test3 (abs: 52 , rel: 10 , size: 10) +
| | | | d (abs: 70 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | a | | root (abs: 102 , rel: 0 , size: 112) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 92 , rel: 10 , size: 101) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 44 , rel: 48 , size: 52) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 44 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 36 , rel: 8 , size: 34) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 20 , rel: 16 , size: 17) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 10 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | new (abs: 28 , rel: 8 , size: 8) +
b (abs: 54 , rel: 14 , size: 17) +| | | | new (abs: 52 , rel: 40 , size: 8) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | a (abs: 84 , rel: 8 , size: 32) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 70 , rel: 14 , size: 17) +
| | | | test3 (abs: 60 , rel: 10 , size: 10) +
| | | | d (abs: 78 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | r | | root (abs: 38 , rel: 0 , size: 48) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 30 , rel: 8 , size: 38) +
b (abs: 36 , rel: 40 , size: 44) +| | | | new (abs: 0 , rel: 30 , size: 8) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | a (abs: 22 , rel: 8 , size: 22) +
x (abs: 28 , rel: 8 , size: 25) +| | | | new (abs: 8 , rel: 14 , size: 8) +
b (abs: 20 , rel: 8 , size: 17) +| | | | d (abs: 16 , rel: 6 , size: 6) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | |
a (abs: 68 , rel: 8 , size: 32) +| | | |
b (abs: 54 , rel: 14 , size: 17) +| | | |
test3 (abs: 44 , rel: 10 , size: 10) +| | | |
d (abs: 62 , rel: 6 , size: 6) +| | | |
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | a | | root (abs: 112 , rel: 0 , size: 122) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 102 , rel: 10 , size: 111) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 44 , rel: 58 , size: 52) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 44 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 36 , rel: 8 , size: 34) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 20 , rel: 16 , size: 17) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 10 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | new (abs: 28 , rel: 8 , size: 8) +
b (abs: 54 , rel: 14 , size: 17) +| | | | new (abs: 52 , rel: 50 , size: 8) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | a (abs: 92 , rel: 10 , size: 41) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 70 , rel: 22 , size: 17) +
| | | | test3 (abs: 60 , rel: 10 , size: 10) +
| | | | new (abs: 78 , rel: 14 , size: 8) +
| | | | d (abs: 86 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | r | | root (abs: 38 , rel: 0 , size: 48) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 30 , rel: 8 , size: 38) +
b (abs: 36 , rel: 40 , size: 44) +| | | | new (abs: 0 , rel: 30 , size: 8) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | a (abs: 22 , rel: 8 , size: 22) +
x (abs: 28 , rel: 8 , size: 25) +| | | | new (abs: 8 , rel: 14 , size: 8) +
b (abs: 20 , rel: 8 , size: 17) +| | | | d (abs: 16 , rel: 6 , size: 6) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | |
a (abs: 68 , rel: 8 , size: 32) +| | | |
b (abs: 54 , rel: 14 , size: 17) +| | | |
test3 (abs: 44 , rel: 10 , size: 10) +| | | |
d (abs: 62 , rel: 6 , size: 6) +| | | |
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | a | | root (abs: 112 , rel: 0 , size: 122) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 102 , rel: 10 , size: 111) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 44 , rel: 58 , size: 52) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 44 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 36 , rel: 8 , size: 34) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 20 , rel: 16 , size: 17) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 10 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | new (abs: 28 , rel: 8 , size: 8) +
b (abs: 54 , rel: 14 , size: 17) +| | | | new (abs: 52 , rel: 50 , size: 8) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | a (abs: 92 , rel: 10 , size: 41) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 70 , rel: 22 , size: 17) +
| | | | test3 (abs: 60 , rel: 10 , size: 10) +
| | | | new (abs: 78 , rel: 14 , size: 8) +
| | | | d (abs: 86 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | i | | root (abs: 92 , rel: 0 , size: 102) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 84 , rel: 8 , size: 92) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 44 , rel: 40 , size: 52) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 44 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 36 , rel: 8 , size: 33) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 28 , rel: 8 , size: 26) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 18 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | new (abs: 20 , rel: 8 , size: 8) +
b (abs: 54 , rel: 14 , size: 17) +| | | | a (abs: 76 , rel: 8 , size: 32) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | b (abs: 62 , rel: 14 , size: 17) +
d (abs: 62 , rel: 6 , size: 6) +| | | | test3 (abs: 52 , rel: 10 , size: 10) +
| | | | d (abs: 70 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | i | | root (abs: 110 , rel: 0 , size: 120) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 102 , rel: 8 , size: 110) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 52 , rel: 50 , size: 61) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 52 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 36 , rel: 16 , size: 33) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 28 , rel: 8 , size: 26) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 18 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | new (abs: 20 , rel: 8 , size: 8) +
b (abs: 54 , rel: 14 , size: 17) +| | | | new (abs: 44 , rel: 8 , size: 8) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | a (abs: 94 , rel: 8 , size: 40) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 80 , rel: 14 , size: 26) +
| | | | test3 (abs: 62 , rel: 18 , size: 10) +
| | | | new (abs: 72 , rel: 8 , size: 8) +
| | | | d (abs: 88 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | b | | root (abs: 102 , rel: 0 , size: 112) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 94 , rel: 8 , size: 102) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 44 , rel: 50 , size: 52) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 44 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 36 , rel: 8 , size: 34) +
b (abs: 20 , rel: 8 , size: 17) +| | | | new (abs: 10 , rel: 26 , size: 8) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | b (abs: 28 , rel: 8 , size: 17) +
a (abs: 68 , rel: 8 , size: 32) +| | | | test2 (abs: 18 , rel: 10 , size: 10)+
b (abs: 54 , rel: 14 , size: 17) +| | | | a (abs: 84 , rel: 10 , size: 41) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | new (abs: 52 , rel: 32 , size: 8) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 70 , rel: 14 , size: 17) +
| | | | test3 (abs: 60 , rel: 10 , size: 10) +
| | | | d (abs: 78 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | b | | root (abs: 102 , rel: 0 , size: 112) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 94 , rel: 8 , size: 102) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 44 , rel: 50 , size: 52) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 44 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 36 , rel: 8 , size: 34) +
b (abs: 20 , rel: 8 , size: 17) +| | | | new (abs: 10 , rel: 26 , size: 8) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | b (abs: 28 , rel: 8 , size: 17) +
a (abs: 68 , rel: 8 , size: 32) +| | | | test2 (abs: 18 , rel: 10 , size: 10)+
b (abs: 54 , rel: 14 , size: 17) +| | | | a (abs: 84 , rel: 10 , size: 41) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | new (abs: 52 , rel: 32 , size: 8) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 70 , rel: 14 , size: 17) +
| | | | test3 (abs: 60 , rel: 10 , size: 10) +
| | | | d (abs: 78 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | i | | root (abs: 110 , rel: 0 , size: 120) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 102 , rel: 8 , size: 110) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 52 , rel: 50 , size: 61) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 52 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 36 , rel: 16 , size: 33) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 28 , rel: 8 , size: 26) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 18 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | new (abs: 20 , rel: 8 , size: 8) +
b (abs: 54 , rel: 14 , size: 17) +| | | | new (abs: 44 , rel: 8 , size: 8) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | a (abs: 94 , rel: 8 , size: 40) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 80 , rel: 14 , size: 26) +
| | | | test3 (abs: 62 , rel: 18 , size: 10) +
| | | | new (abs: 72 , rel: 8 , size: 8) +
| | | | d (abs: 88 , rel: 6 , size: 6) +
| | | |
root (abs: 66 , rel: 0 , size: 76) +| /root//x//b | i | | root (abs: 94 , rel: 0 , size: 104) +
x (abs: 54 , rel: 12 , size: 65) +| | | | x (abs: 82 , rel: 12 , size: 93) +
a (abs: 0 , rel: 54 , size: 6) +| | | | a (abs: 0 , rel: 82 , size: 6) +
b (abs: 6 , rel: 48 , size: 6) +| | | | b (abs: 12 , rel: 70 , size: 13) +
b (abs: 18 , rel: 36 , size: 13) +| | | | n (abs: 6 , rel: 6 , size: 6) +
c (abs: 12 , rel: 6 , size: 6) +| | | | b (abs: 32 , rel: 50 , size: 20) +
x (abs: 40 , rel: 14 , size: 22) +| | | | c (abs: 20 , rel: 12 , size: 6) +
b (abs: 32 , rel: 8 , size: 14) +| | | | n (abs: 26 , rel: 6 , size: 6) +
@i (abs: 25 , rel: 7 , size: 6) +| | | | x (abs: 60 , rel: 22 , size: 27) +
b (abs: 48 , rel: 6 , size: 6) +| | | | b (abs: 52 , rel: 8 , size: 20) +
| | | | @i (abs: 40 , rel: 12 , size: 6) +
| | | | n (abs: 46 , rel: 6 , size: 6) +
| | | | b (abs: 74 , rel: 8 , size: 13) +
| | | | n (abs: 68 , rel: 6 , size: 6) +
| | | |
(13 rows)
-- Add a node that matches the xpath.
update a set new_node='';
select node_debug_print(data), targ_path, add_mode, new_node, node_debug_print(xml.add(data, targ_path, new_node, add_mode))
from a
order by a.i;
node_debug_print | targ_path | add_mode | new_node | node_debug_print
-------------------------------------------+-------------+----------+----------+-------------------------------------------
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | r | | root (abs: 46 , rel: 0 , size: 56) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 38 , rel: 8 , size: 46) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 0 , rel: 38 , size: 6) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | a (abs: 30 , rel: 8 , size: 32) +
x (abs: 28 , rel: 8 , size: 25) +| | | | b (abs: 16 , rel: 14 , size: 17) +
b (abs: 20 , rel: 8 , size: 17) +| | | | test3 (abs: 6 , rel: 10 , size: 10) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | d (abs: 24 , rel: 6 , size: 6) +
a (abs: 68 , rel: 8 , size: 32) +| | | |
b (abs: 54 , rel: 14 , size: 17) +| | | |
test3 (abs: 44 , rel: 10 , size: 10) +| | | |
d (abs: 62 , rel: 6 , size: 6) +| | | |
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | b | | root (abs: 90 , rel: 0 , size: 100) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 82 , rel: 8 , size: 90) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 42 , rel: 40 , size: 50) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 42 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 34 , rel: 8 , size: 32) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 10 , rel: 24 , size: 6) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | b (abs: 26 , rel: 8 , size: 17) +
a (abs: 68 , rel: 8 , size: 32) +| | | | test2 (abs: 16 , rel: 10 , size: 10)+
b (abs: 54 , rel: 14 , size: 17) +| | | | a (abs: 74 , rel: 8 , size: 32) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | b (abs: 60 , rel: 14 , size: 17) +
d (abs: 62 , rel: 6 , size: 6) +| | | | test3 (abs: 50 , rel: 10 , size: 10) +
| | | | d (abs: 68 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | a | | root (abs: 98 , rel: 0 , size: 108) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 88 , rel: 10 , size: 97) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 42 , rel: 46 , size: 50) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 42 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 34 , rel: 8 , size: 32) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 20 , rel: 14 , size: 17) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 10 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | b (abs: 28 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 50 , rel: 38 , size: 6) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | a (abs: 80 , rel: 8 , size: 32) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 66 , rel: 14 , size: 17) +
| | | | test3 (abs: 56 , rel: 10 , size: 10) +
| | | | d (abs: 74 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | r | | root (abs: 34 , rel: 0 , size: 44) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 26 , rel: 8 , size: 34) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 0 , rel: 26 , size: 6) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | a (abs: 18 , rel: 8 , size: 20) +
x (abs: 28 , rel: 8 , size: 25) +| | | | b (abs: 6 , rel: 12 , size: 6) +
b (abs: 20 , rel: 8 , size: 17) +| | | | d (abs: 12 , rel: 6 , size: 6) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | |
a (abs: 68 , rel: 8 , size: 32) +| | | |
b (abs: 54 , rel: 14 , size: 17) +| | | |
test3 (abs: 44 , rel: 10 , size: 10) +| | | |
d (abs: 62 , rel: 6 , size: 6) +| | | |
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | a | | root (abs: 106 , rel: 0 , size: 116) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 96 , rel: 10 , size: 105) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 42 , rel: 54 , size: 50) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 42 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 34 , rel: 8 , size: 32) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 20 , rel: 14 , size: 17) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 10 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | b (abs: 28 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 50 , rel: 46 , size: 6) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | a (abs: 86 , rel: 10 , size: 39) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 66 , rel: 20 , size: 17) +
| | | | test3 (abs: 56 , rel: 10 , size: 10) +
| | | | b (abs: 74 , rel: 12 , size: 6) +
| | | | d (abs: 80 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | r | | root (abs: 34 , rel: 0 , size: 44) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 26 , rel: 8 , size: 34) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 0 , rel: 26 , size: 6) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | a (abs: 18 , rel: 8 , size: 20) +
x (abs: 28 , rel: 8 , size: 25) +| | | | b (abs: 6 , rel: 12 , size: 6) +
b (abs: 20 , rel: 8 , size: 17) +| | | | d (abs: 12 , rel: 6 , size: 6) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | |
a (abs: 68 , rel: 8 , size: 32) +| | | |
b (abs: 54 , rel: 14 , size: 17) +| | | |
test3 (abs: 44 , rel: 10 , size: 10) +| | | |
d (abs: 62 , rel: 6 , size: 6) +| | | |
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | a | | root (abs: 106 , rel: 0 , size: 116) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 96 , rel: 10 , size: 105) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 42 , rel: 54 , size: 50) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 42 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 34 , rel: 8 , size: 32) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 20 , rel: 14 , size: 17) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 10 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | b (abs: 28 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 50 , rel: 46 , size: 6) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | a (abs: 86 , rel: 10 , size: 39) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 66 , rel: 20 , size: 17) +
| | | | test3 (abs: 56 , rel: 10 , size: 10) +
| | | | b (abs: 74 , rel: 12 , size: 6) +
| | | | d (abs: 80 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | i | | root (abs: 90 , rel: 0 , size: 100) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 82 , rel: 8 , size: 90) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 42 , rel: 40 , size: 50) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 42 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 34 , rel: 8 , size: 31) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 26 , rel: 8 , size: 24) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 16 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | b (abs: 20 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | a (abs: 74 , rel: 8 , size: 32) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | b (abs: 60 , rel: 14 , size: 17) +
d (abs: 62 , rel: 6 , size: 6) +| | | | test3 (abs: 50 , rel: 10 , size: 10) +
| | | | d (abs: 68 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | i | | root (abs: 104 , rel: 0 , size: 114) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 96 , rel: 8 , size: 104) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 48 , rel: 48 , size: 57) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 48 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 34 , rel: 14 , size: 31) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 26 , rel: 8 , size: 24) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 16 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | b (abs: 20 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 42 , rel: 6 , size: 6) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | a (abs: 88 , rel: 8 , size: 38) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 74 , rel: 14 , size: 24) +
| | | | test3 (abs: 58 , rel: 16 , size: 10) +
| | | | b (abs: 68 , rel: 6 , size: 6) +
| | | | d (abs: 82 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | b | | root (abs: 98 , rel: 0 , size: 108) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 90 , rel: 8 , size: 98) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 42 , rel: 48 , size: 50) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 42 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 34 , rel: 8 , size: 32) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 10 , rel: 24 , size: 6) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | b (abs: 26 , rel: 8 , size: 17) +
a (abs: 68 , rel: 8 , size: 32) +| | | | test2 (abs: 16 , rel: 10 , size: 10)+
b (abs: 54 , rel: 14 , size: 17) +| | | | a (abs: 80 , rel: 10 , size: 39) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | b (abs: 50 , rel: 30 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 66 , rel: 14 , size: 17) +
| | | | test3 (abs: 56 , rel: 10 , size: 10) +
| | | | d (abs: 74 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | b | | root (abs: 98 , rel: 0 , size: 108) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 90 , rel: 8 , size: 98) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 42 , rel: 48 , size: 50) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 42 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 34 , rel: 8 , size: 32) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 10 , rel: 24 , size: 6) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | b (abs: 26 , rel: 8 , size: 17) +
a (abs: 68 , rel: 8 , size: 32) +| | | | test2 (abs: 16 , rel: 10 , size: 10)+
b (abs: 54 , rel: 14 , size: 17) +| | | | a (abs: 80 , rel: 10 , size: 39) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | b (abs: 50 , rel: 30 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 66 , rel: 14 , size: 17) +
| | | | test3 (abs: 56 , rel: 10 , size: 10) +
| | | | d (abs: 74 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | i | | root (abs: 104 , rel: 0 , size: 114) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 96 , rel: 8 , size: 104) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 48 , rel: 48 , size: 57) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 48 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 34 , rel: 14 , size: 31) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 26 , rel: 8 , size: 24) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 16 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | b (abs: 20 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 42 , rel: 6 , size: 6) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | a (abs: 88 , rel: 8 , size: 38) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 74 , rel: 14 , size: 24) +
| | | | test3 (abs: 58 , rel: 16 , size: 10) +
| | | | b (abs: 68 , rel: 6 , size: 6) +
| | | | d (abs: 82 , rel: 6 , size: 6) +
| | | |
root (abs: 66 , rel: 0 , size: 76) +| /root//x//b | i | | root (abs: 94 , rel: 0 , size: 104) +
x (abs: 54 , rel: 12 , size: 65) +| | | | x (abs: 82 , rel: 12 , size: 93) +
a (abs: 0 , rel: 54 , size: 6) +| | | | a (abs: 0 , rel: 82 , size: 6) +
b (abs: 6 , rel: 48 , size: 6) +| | | | b (abs: 12 , rel: 70 , size: 13) +
b (abs: 18 , rel: 36 , size: 13) +| | | | b (abs: 6 , rel: 6 , size: 6) +
c (abs: 12 , rel: 6 , size: 6) +| | | | b (abs: 32 , rel: 50 , size: 20) +
x (abs: 40 , rel: 14 , size: 22) +| | | | c (abs: 20 , rel: 12 , size: 6) +
b (abs: 32 , rel: 8 , size: 14) +| | | | b (abs: 26 , rel: 6 , size: 6) +
@i (abs: 25 , rel: 7 , size: 6) +| | | | x (abs: 60 , rel: 22 , size: 27) +
b (abs: 48 , rel: 6 , size: 6) +| | | | b (abs: 52 , rel: 8 , size: 20) +
| | | | @i (abs: 40 , rel: 12 , size: 6) +
| | | | b (abs: 46 , rel: 6 , size: 6) +
| | | | b (abs: 74 , rel: 8 , size: 13) +
| | | | b (abs: 68 , rel: 6 , size: 6) +
| | | |
(13 rows)
-- Add a subtree that contains matching nodes (i.e. infinite recursion could take place).
update a set new_node='';
select node_debug_print(data), targ_path, add_mode, new_node, node_debug_print(xml.add(data, targ_path, new_node, add_mode))
from a
order by a.i;
node_debug_print | targ_path | add_mode | new_node | node_debug_print
-------------------------------------------+-------------+----------+--------------------+-------------------------------------------
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | r | | root (abs: 62 , rel: 0 , size: 72) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 54 , rel: 8 , size: 62) +
b (abs: 36 , rel: 40 , size: 44) +| | | | x (abs: 14 , rel: 40 , size: 21) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | b (abs: 6 , rel: 8 , size: 13) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 0 , rel: 6 , size: 6) +
b (abs: 20 , rel: 8 , size: 17) +| | | | a (abs: 46 , rel: 8 , size: 32) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | b (abs: 32 , rel: 14 , size: 17) +
a (abs: 68 , rel: 8 , size: 32) +| | | | test3 (abs: 22 , rel: 10 , size: 10) +
b (abs: 54 , rel: 14 , size: 17) +| | | | d (abs: 40 , rel: 6 , size: 6) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | |
d (abs: 62 , rel: 6 , size: 6) +| | | |
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | b | | root (abs: 106 , rel: 0 , size: 116) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 98 , rel: 8 , size: 106) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 58 , rel: 40 , size: 66) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 58 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 50 , rel: 8 , size: 48) +
b (abs: 20 , rel: 8 , size: 17) +| | | | x (abs: 24 , rel: 26 , size: 21) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | b (abs: 16 , rel: 8 , size: 13) +
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 10 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 42 , rel: 8 , size: 17) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | test2 (abs: 32 , rel: 10 , size: 10)+
d (abs: 62 , rel: 6 , size: 6) +| | | | a (abs: 90 , rel: 8 , size: 32) +
| | | | b (abs: 76 , rel: 14 , size: 17) +
| | | | test3 (abs: 66 , rel: 10 , size: 10) +
| | | | d (abs: 84 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | a | | root (abs: 130 , rel: 0 , size: 140) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 120 , rel: 10 , size: 129) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 58 , rel: 62 , size: 66) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 58 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 50 , rel: 8 , size: 48) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 20 , rel: 30 , size: 17) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 10 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 42 , rel: 8 , size: 21) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 34 , rel: 8 , size: 13) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 28 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | x (abs: 80 , rel: 40 , size: 21) +
| | | | b (abs: 72 , rel: 8 , size: 13) +
| | | | x (abs: 66 , rel: 6 , size: 6) +
| | | | a (abs: 112 , rel: 8 , size: 32) +
| | | | b (abs: 98 , rel: 14 , size: 17) +
| | | | test3 (abs: 88 , rel: 10 , size: 10) +
| | | | d (abs: 106 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | r | | root (abs: 66 , rel: 0 , size: 76) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 58 , rel: 8 , size: 66) +
b (abs: 36 , rel: 40 , size: 44) +| | | | x (abs: 14 , rel: 44 , size: 21) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | b (abs: 6 , rel: 8 , size: 13) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 0 , rel: 6 , size: 6) +
b (abs: 20 , rel: 8 , size: 17) +| | | | a (abs: 50 , rel: 8 , size: 36) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | x (abs: 36 , rel: 14 , size: 21) +
a (abs: 68 , rel: 8 , size: 32) +| | | | b (abs: 28 , rel: 8 , size: 13) +
b (abs: 54 , rel: 14 , size: 17) +| | | | x (abs: 22 , rel: 6 , size: 6) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | d (abs: 44 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | |
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | a | | root (abs: 154 , rel: 0 , size: 164) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 144 , rel: 10 , size: 153) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 58 , rel: 86 , size: 66) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 58 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 50 , rel: 8 , size: 48) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 20 , rel: 30 , size: 17) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 10 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 42 , rel: 8 , size: 21) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 34 , rel: 8 , size: 13) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 28 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | x (abs: 80 , rel: 64 , size: 21) +
| | | | b (abs: 72 , rel: 8 , size: 13) +
| | | | x (abs: 66 , rel: 6 , size: 6) +
| | | | a (abs: 134 , rel: 10 , size: 55) +
| | | | b (abs: 98 , rel: 36 , size: 17) +
| | | | test3 (abs: 88 , rel: 10 , size: 10) +
| | | | x (abs: 120 , rel: 14 , size: 21) +
| | | | b (abs: 112 , rel: 8 , size: 13) +
| | | | x (abs: 106 , rel: 6 , size: 6) +
| | | | d (abs: 128 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | r | | root (abs: 66 , rel: 0 , size: 76) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 58 , rel: 8 , size: 66) +
b (abs: 36 , rel: 40 , size: 44) +| | | | x (abs: 14 , rel: 44 , size: 21) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | b (abs: 6 , rel: 8 , size: 13) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 0 , rel: 6 , size: 6) +
b (abs: 20 , rel: 8 , size: 17) +| | | | a (abs: 50 , rel: 8 , size: 36) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | x (abs: 36 , rel: 14 , size: 21) +
a (abs: 68 , rel: 8 , size: 32) +| | | | b (abs: 28 , rel: 8 , size: 13) +
b (abs: 54 , rel: 14 , size: 17) +| | | | x (abs: 22 , rel: 6 , size: 6) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | d (abs: 44 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | |
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | a | | root (abs: 154 , rel: 0 , size: 164) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 144 , rel: 10 , size: 153) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 58 , rel: 86 , size: 66) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 58 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 50 , rel: 8 , size: 48) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 20 , rel: 30 , size: 17) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 10 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 42 , rel: 8 , size: 21) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 34 , rel: 8 , size: 13) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 28 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | x (abs: 80 , rel: 64 , size: 21) +
| | | | b (abs: 72 , rel: 8 , size: 13) +
| | | | x (abs: 66 , rel: 6 , size: 6) +
| | | | a (abs: 134 , rel: 10 , size: 55) +
| | | | b (abs: 98 , rel: 36 , size: 17) +
| | | | test3 (abs: 88 , rel: 10 , size: 10) +
| | | | x (abs: 120 , rel: 14 , size: 21) +
| | | | b (abs: 112 , rel: 8 , size: 13) +
| | | | x (abs: 106 , rel: 6 , size: 6) +
| | | | d (abs: 128 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | i | | root (abs: 106 , rel: 0 , size: 116) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 98 , rel: 8 , size: 106) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 58 , rel: 40 , size: 66) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 58 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 50 , rel: 8 , size: 47) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 42 , rel: 8 , size: 40) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 32 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 34 , rel: 8 , size: 21) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 26 , rel: 8 , size: 13) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 20 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | a (abs: 90 , rel: 8 , size: 32) +
| | | | b (abs: 76 , rel: 14 , size: 17) +
| | | | test3 (abs: 66 , rel: 10 , size: 10) +
| | | | d (abs: 84 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | i | | root (abs: 152 , rel: 0 , size: 162) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 144 , rel: 8 , size: 152) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 80 , rel: 64 , size: 89) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 80 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 50 , rel: 30 , size: 47) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 42 , rel: 8 , size: 40) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 32 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 34 , rel: 8 , size: 21) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 26 , rel: 8 , size: 13) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 20 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | x (abs: 72 , rel: 8 , size: 21) +
| | | | b (abs: 64 , rel: 8 , size: 13) +
| | | | x (abs: 58 , rel: 6 , size: 6) +
| | | | a (abs: 136 , rel: 8 , size: 54) +
| | | | b (abs: 122 , rel: 14 , size: 40) +
| | | | test3 (abs: 90 , rel: 32 , size: 10) +
| | | | x (abs: 114 , rel: 8 , size: 21) +
| | | | b (abs: 106 , rel: 8 , size: 13) +
| | | | x (abs: 100 , rel: 6 , size: 6) +
| | | | d (abs: 130 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | b | | root (abs: 130 , rel: 0 , size: 140) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 122 , rel: 8 , size: 130) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 58 , rel: 64 , size: 66) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 58 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 50 , rel: 8 , size: 48) +
b (abs: 20 , rel: 8 , size: 17) +| | | | x (abs: 24 , rel: 26 , size: 21) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | b (abs: 16 , rel: 8 , size: 13) +
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 10 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 42 , rel: 8 , size: 17) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | test2 (abs: 32 , rel: 10 , size: 10)+
d (abs: 62 , rel: 6 , size: 6) +| | | | a (abs: 112 , rel: 10 , size: 55) +
| | | | x (abs: 80 , rel: 32 , size: 21) +
| | | | b (abs: 72 , rel: 8 , size: 13) +
| | | | x (abs: 66 , rel: 6 , size: 6) +
| | | | b (abs: 98 , rel: 14 , size: 17) +
| | | | test3 (abs: 88 , rel: 10 , size: 10) +
| | | | d (abs: 106 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | b | | root (abs: 130 , rel: 0 , size: 140) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 122 , rel: 8 , size: 130) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 58 , rel: 64 , size: 66) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 58 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 50 , rel: 8 , size: 48) +
b (abs: 20 , rel: 8 , size: 17) +| | | | x (abs: 24 , rel: 26 , size: 21) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | b (abs: 16 , rel: 8 , size: 13) +
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 10 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 42 , rel: 8 , size: 17) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | test2 (abs: 32 , rel: 10 , size: 10)+
d (abs: 62 , rel: 6 , size: 6) +| | | | a (abs: 112 , rel: 10 , size: 55) +
| | | | x (abs: 80 , rel: 32 , size: 21) +
| | | | b (abs: 72 , rel: 8 , size: 13) +
| | | | x (abs: 66 , rel: 6 , size: 6) +
| | | | b (abs: 98 , rel: 14 , size: 17) +
| | | | test3 (abs: 88 , rel: 10 , size: 10) +
| | | | d (abs: 106 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | i | | root (abs: 152 , rel: 0 , size: 162) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 144 , rel: 8 , size: 152) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 80 , rel: 64 , size: 89) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 80 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 50 , rel: 30 , size: 47) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 42 , rel: 8 , size: 40) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 32 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 34 , rel: 8 , size: 21) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 26 , rel: 8 , size: 13) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 20 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | x (abs: 72 , rel: 8 , size: 21) +
| | | | b (abs: 64 , rel: 8 , size: 13) +
| | | | x (abs: 58 , rel: 6 , size: 6) +
| | | | a (abs: 136 , rel: 8 , size: 54) +
| | | | b (abs: 122 , rel: 14 , size: 40) +
| | | | test3 (abs: 90 , rel: 32 , size: 10) +
| | | | x (abs: 114 , rel: 8 , size: 21) +
| | | | b (abs: 106 , rel: 8 , size: 13) +
| | | | x (abs: 100 , rel: 6 , size: 6) +
| | | | d (abs: 130 , rel: 6 , size: 6) +
| | | |
root (abs: 66 , rel: 0 , size: 76) +| /root//x//b | i | | root (abs: 158 , rel: 0 , size: 168) +
x (abs: 54 , rel: 12 , size: 65) +| | | | x (abs: 146 , rel: 12 , size: 157) +
a (abs: 0 , rel: 54 , size: 6) +| | | | a (abs: 0 , rel: 146 , size: 6) +
b (abs: 6 , rel: 48 , size: 6) +| | | | b (abs: 28 , rel: 118 , size: 29) +
b (abs: 18 , rel: 36 , size: 13) +| | | | x (abs: 20 , rel: 8 , size: 21) +
c (abs: 12 , rel: 6 , size: 6) +| | | | b (abs: 12 , rel: 8 , size: 13) +
x (abs: 40 , rel: 14 , size: 22) +| | | | x (abs: 6 , rel: 6 , size: 6) +
b (abs: 32 , rel: 8 , size: 14) +| | | | b (abs: 64 , rel: 82 , size: 36) +
@i (abs: 25 , rel: 7 , size: 6) +| | | | c (abs: 36 , rel: 28 , size: 6) +
b (abs: 48 , rel: 6 , size: 6) +| | | | x (abs: 56 , rel: 8 , size: 21) +
| | | | b (abs: 48 , rel: 8 , size: 13) +
| | | | x (abs: 42 , rel: 6 , size: 6) +
| | | | x (abs: 108 , rel: 38 , size: 43) +
| | | | b (abs: 100 , rel: 8 , size: 36) +
| | | | @i (abs: 72 , rel: 28 , size: 6) +
| | | | x (abs: 92 , rel: 8 , size: 21) +
| | | | b (abs: 84 , rel: 8 , size: 13) +
| | | | x (abs: 78 , rel: 6 , size: 6) +
| | | | b (abs: 138 , rel: 8 , size: 29) +
| | | | x (abs: 130 , rel: 8 , size: 21) +
| | | | b (abs: 122 , rel: 8 , size: 13) +
| | | | x (abs: 116 , rel: 6 , size: 6) +
| | | |
(13 rows)
-- Similar to the previous one, just a document fragment is added instead of a single (though compound) node.
update a set new_node='';
select node_debug_print(data), targ_path, add_mode, new_node, node_debug_print(xml.add(data, targ_path, new_node, add_mode))
from a
order by a.i;
node_debug_print | targ_path | add_mode | new_node | node_debug_print
-------------------------------------------+-------------+----------+--------------------------------------+-------------------------------------------
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | r | | root (abs: 86 , rel: 0 , size: 96) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 76 , rel: 10 , size: 85) +
b (abs: 36 , rel: 40 , size: 44) +| | | | x (abs: 14 , rel: 62 , size: 21) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | b (abs: 6 , rel: 8 , size: 13) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 0 , rel: 6 , size: 6) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 36 , rel: 40 , size: 21) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | x (abs: 28 , rel: 8 , size: 13) +
a (abs: 68 , rel: 8 , size: 32) +| | | | b (abs: 22 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | a (abs: 68 , rel: 8 , size: 32) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | b (abs: 54 , rel: 14 , size: 17) +
d (abs: 62 , rel: 6 , size: 6) +| | | | test3 (abs: 44 , rel: 10 , size: 10) +
| | | | d (abs: 62 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | b | | root (abs: 130 , rel: 0 , size: 140) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 122 , rel: 8 , size: 130) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 82 , rel: 40 , size: 90) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 82 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 72 , rel: 10 , size: 71) +
b (abs: 20 , rel: 8 , size: 17) +| | | | x (abs: 24 , rel: 48 , size: 21) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | b (abs: 16 , rel: 8 , size: 13) +
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 10 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 46 , rel: 26 , size: 21) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 38 , rel: 8 , size: 13) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 32 , rel: 6 , size: 6) +
| | | | b (abs: 64 , rel: 8 , size: 17) +
| | | | test2 (abs: 54 , rel: 10 , size: 10)+
| | | | a (abs: 114 , rel: 8 , size: 32) +
| | | | b (abs: 100 , rel: 14 , size: 17) +
| | | | test3 (abs: 90 , rel: 10 , size: 10) +
| | | | d (abs: 108 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | a | | root (abs: 176 , rel: 0 , size: 186) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 166 , rel: 10 , size: 176) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 82 , rel: 84 , size: 90) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 82 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 72 , rel: 10 , size: 71) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 20 , rel: 52 , size: 17) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 10 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 42 , rel: 30 , size: 21) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 34 , rel: 8 , size: 13) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 28 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 64 , rel: 8 , size: 21) +
| | | | x (abs: 56 , rel: 8 , size: 13) +
| | | | b (abs: 50 , rel: 6 , size: 6) +
| | | | x (abs: 104 , rel: 62 , size: 21) +
| | | | b (abs: 96 , rel: 8 , size: 13) +
| | | | x (abs: 90 , rel: 6 , size: 6) +
| | | | b (abs: 126 , rel: 40 , size: 21) +
| | | | x (abs: 118 , rel: 8 , size: 13) +
| | | | b (abs: 112 , rel: 6 , size: 6) +
| | | | a (abs: 158 , rel: 8 , size: 32) +
| | | | b (abs: 144 , rel: 14 , size: 17) +
| | | | test3 (abs: 134 , rel: 10 , size: 10)+
| | | | d (abs: 152 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | r | | root (abs: 114 , rel: 0 , size: 124) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 104 , rel: 10 , size: 113) +
b (abs: 36 , rel: 40 , size: 44) +| | | | x (abs: 14 , rel: 90 , size: 21) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | b (abs: 6 , rel: 8 , size: 13) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 0 , rel: 6 , size: 6) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 36 , rel: 68 , size: 21) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | x (abs: 28 , rel: 8 , size: 13) +
a (abs: 68 , rel: 8 , size: 32) +| | | | b (abs: 22 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | a (abs: 94 , rel: 10 , size: 59) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 58 , rel: 36 , size: 21) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 50 , rel: 8 , size: 13) +
| | | | x (abs: 44 , rel: 6 , size: 6) +
| | | | b (abs: 80 , rel: 14 , size: 21) +
| | | | x (abs: 72 , rel: 8 , size: 13) +
| | | | b (abs: 66 , rel: 6 , size: 6) +
| | | | d (abs: 88 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | a | | root (abs: 222 , rel: 0 , size: 232) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 212 , rel: 10 , size: 222) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 82 , rel: 130 , size: 90) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 82 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 72 , rel: 10 , size: 71) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 20 , rel: 52 , size: 17) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 10 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 42 , rel: 30 , size: 21) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 34 , rel: 8 , size: 13) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 28 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 64 , rel: 8 , size: 21) +
| | | | x (abs: 56 , rel: 8 , size: 13) +
| | | | b (abs: 50 , rel: 6 , size: 6) +
| | | | x (abs: 104 , rel: 108 , size: 21) +
| | | | b (abs: 96 , rel: 8 , size: 13) +
| | | | x (abs: 90 , rel: 6 , size: 6) +
| | | | b (abs: 126 , rel: 86 , size: 21) +
| | | | x (abs: 118 , rel: 8 , size: 13) +
| | | | b (abs: 112 , rel: 6 , size: 6) +
| | | | a (abs: 202 , rel: 10 , size: 78) +
| | | | b (abs: 144 , rel: 58 , size: 17) +
| | | | test3 (abs: 134 , rel: 10 , size: 10)+
| | | | x (abs: 166 , rel: 36 , size: 21) +
| | | | b (abs: 158 , rel: 8 , size: 13) +
| | | | x (abs: 152 , rel: 6 , size: 6) +
| | | | b (abs: 188 , rel: 14 , size: 21) +
| | | | x (abs: 180 , rel: 8 , size: 13) +
| | | | b (abs: 174 , rel: 6 , size: 6) +
| | | | d (abs: 196 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | r | | root (abs: 114 , rel: 0 , size: 124) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 104 , rel: 10 , size: 113) +
b (abs: 36 , rel: 40 , size: 44) +| | | | x (abs: 14 , rel: 90 , size: 21) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | b (abs: 6 , rel: 8 , size: 13) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 0 , rel: 6 , size: 6) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 36 , rel: 68 , size: 21) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | x (abs: 28 , rel: 8 , size: 13) +
a (abs: 68 , rel: 8 , size: 32) +| | | | b (abs: 22 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | a (abs: 94 , rel: 10 , size: 59) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 58 , rel: 36 , size: 21) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 50 , rel: 8 , size: 13) +
| | | | x (abs: 44 , rel: 6 , size: 6) +
| | | | b (abs: 80 , rel: 14 , size: 21) +
| | | | x (abs: 72 , rel: 8 , size: 13) +
| | | | b (abs: 66 , rel: 6 , size: 6) +
| | | | d (abs: 88 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | a | | root (abs: 222 , rel: 0 , size: 232) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 212 , rel: 10 , size: 222) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 82 , rel: 130 , size: 90) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 82 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 72 , rel: 10 , size: 71) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 20 , rel: 52 , size: 17) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 10 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 42 , rel: 30 , size: 21) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 34 , rel: 8 , size: 13) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 28 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 64 , rel: 8 , size: 21) +
| | | | x (abs: 56 , rel: 8 , size: 13) +
| | | | b (abs: 50 , rel: 6 , size: 6) +
| | | | x (abs: 104 , rel: 108 , size: 21) +
| | | | b (abs: 96 , rel: 8 , size: 13) +
| | | | x (abs: 90 , rel: 6 , size: 6) +
| | | | b (abs: 126 , rel: 86 , size: 21) +
| | | | x (abs: 118 , rel: 8 , size: 13) +
| | | | b (abs: 112 , rel: 6 , size: 6) +
| | | | a (abs: 202 , rel: 10 , size: 78) +
| | | | b (abs: 144 , rel: 58 , size: 17) +
| | | | test3 (abs: 134 , rel: 10 , size: 10)+
| | | | x (abs: 166 , rel: 36 , size: 21) +
| | | | b (abs: 158 , rel: 8 , size: 13) +
| | | | x (abs: 152 , rel: 6 , size: 6) +
| | | | b (abs: 188 , rel: 14 , size: 21) +
| | | | x (abs: 180 , rel: 8 , size: 13) +
| | | | b (abs: 174 , rel: 6 , size: 6) +
| | | | d (abs: 196 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | i | | root (abs: 130 , rel: 0 , size: 140) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 122 , rel: 8 , size: 130) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 82 , rel: 40 , size: 90) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 82 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 74 , rel: 8 , size: 71) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 64 , rel: 10 , size: 63) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 54 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 34 , rel: 30 , size: 21) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 26 , rel: 8 , size: 13) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 20 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 56 , rel: 8 , size: 21) +
| | | | x (abs: 48 , rel: 8 , size: 13) +
| | | | b (abs: 42 , rel: 6 , size: 6) +
| | | | a (abs: 114 , rel: 8 , size: 32) +
| | | | b (abs: 100 , rel: 14 , size: 17) +
| | | | test3 (abs: 90 , rel: 10 , size: 10) +
| | | | d (abs: 108 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | i | | root (abs: 222 , rel: 0 , size: 232) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 214 , rel: 8 , size: 222) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 126 , rel: 88 , size: 136) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 126 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 74 , rel: 52 , size: 71) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 64 , rel: 10 , size: 63) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 54 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 34 , rel: 30 , size: 21) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 26 , rel: 8 , size: 13) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 20 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 56 , rel: 8 , size: 21) +
| | | | x (abs: 48 , rel: 8 , size: 13) +
| | | | b (abs: 42 , rel: 6 , size: 6) +
| | | | x (abs: 96 , rel: 30 , size: 21) +
| | | | b (abs: 88 , rel: 8 , size: 13) +
| | | | x (abs: 82 , rel: 6 , size: 6) +
| | | | b (abs: 118 , rel: 8 , size: 21) +
| | | | x (abs: 110 , rel: 8 , size: 13) +
| | | | b (abs: 104 , rel: 6 , size: 6) +
| | | | a (abs: 206 , rel: 8 , size: 78) +
| | | | b (abs: 190 , rel: 16 , size: 63) +
| | | | test3 (abs: 136 , rel: 54 , size: 10)+
| | | | x (abs: 160 , rel: 30 , size: 21) +
| | | | b (abs: 152 , rel: 8 , size: 13) +
| | | | x (abs: 146 , rel: 6 , size: 6) +
| | | | b (abs: 182 , rel: 8 , size: 21) +
| | | | x (abs: 174 , rel: 8 , size: 13) +
| | | | b (abs: 168 , rel: 6 , size: 6) +
| | | | d (abs: 200 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | b | | root (abs: 176 , rel: 0 , size: 186) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 168 , rel: 8 , size: 176) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 82 , rel: 86 , size: 90) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 82 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 72 , rel: 10 , size: 71) +
b (abs: 20 , rel: 8 , size: 17) +| | | | x (abs: 24 , rel: 48 , size: 21) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | b (abs: 16 , rel: 8 , size: 13) +
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 10 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 46 , rel: 26 , size: 21) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 38 , rel: 8 , size: 13) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 32 , rel: 6 , size: 6) +
| | | | b (abs: 64 , rel: 8 , size: 17) +
| | | | test2 (abs: 54 , rel: 10 , size: 10)+
| | | | a (abs: 158 , rel: 10 , size: 78) +
| | | | x (abs: 104 , rel: 54 , size: 21) +
| | | | b (abs: 96 , rel: 8 , size: 13) +
| | | | x (abs: 90 , rel: 6 , size: 6) +
| | | | b (abs: 126 , rel: 32 , size: 21) +
| | | | x (abs: 118 , rel: 8 , size: 13) +
| | | | b (abs: 112 , rel: 6 , size: 6) +
| | | | b (abs: 144 , rel: 14 , size: 17) +
| | | | test3 (abs: 134 , rel: 10 , size: 10)+
| | | | d (abs: 152 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | b | | root (abs: 176 , rel: 0 , size: 186) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 168 , rel: 8 , size: 176) +
c (abs: 36 , rel: 40 , size: 44) +| | | | c (abs: 82 , rel: 86 , size: 90) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 82 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 72 , rel: 10 , size: 71) +
b (abs: 20 , rel: 8 , size: 17) +| | | | x (abs: 24 , rel: 48 , size: 21) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | b (abs: 16 , rel: 8 , size: 13) +
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 10 , rel: 6 , size: 6) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 46 , rel: 26 , size: 21) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 38 , rel: 8 , size: 13) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 32 , rel: 6 , size: 6) +
| | | | b (abs: 64 , rel: 8 , size: 17) +
| | | | test2 (abs: 54 , rel: 10 , size: 10)+
| | | | a (abs: 158 , rel: 10 , size: 78) +
| | | | x (abs: 104 , rel: 54 , size: 21) +
| | | | b (abs: 96 , rel: 8 , size: 13) +
| | | | x (abs: 90 , rel: 6 , size: 6) +
| | | | b (abs: 126 , rel: 32 , size: 21) +
| | | | x (abs: 118 , rel: 8 , size: 13) +
| | | | b (abs: 112 , rel: 6 , size: 6) +
| | | | b (abs: 144 , rel: 14 , size: 17) +
| | | | test3 (abs: 134 , rel: 10 , size: 10)+
| | | | d (abs: 152 , rel: 6 , size: 6) +
| | | |
root (abs: 84 , rel: 0 , size: 94) +| //x//b | i | | root (abs: 222 , rel: 0 , size: 232) +
x (abs: 76 , rel: 8 , size: 84) +| | | | x (abs: 214 , rel: 8 , size: 222) +
b (abs: 36 , rel: 40 , size: 44) +| | | | b (abs: 126 , rel: 88 , size: 136) +
test1 (abs: 0 , rel: 36 , size: 10) +| | | | test1 (abs: 0 , rel: 126 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | | | x (abs: 74 , rel: 52 , size: 71) +
b (abs: 20 , rel: 8 , size: 17) +| | | | b (abs: 64 , rel: 10 , size: 63) +
test2 (abs: 10 , rel: 10 , size: 10)+| | | | test2 (abs: 10 , rel: 54 , size: 10)+
a (abs: 68 , rel: 8 , size: 32) +| | | | x (abs: 34 , rel: 30 , size: 21) +
b (abs: 54 , rel: 14 , size: 17) +| | | | b (abs: 26 , rel: 8 , size: 13) +
test3 (abs: 44 , rel: 10 , size: 10) +| | | | x (abs: 20 , rel: 6 , size: 6) +
d (abs: 62 , rel: 6 , size: 6) +| | | | b (abs: 56 , rel: 8 , size: 21) +
| | | | x (abs: 48 , rel: 8 , size: 13) +
| | | | b (abs: 42 , rel: 6 , size: 6) +
| | | | x (abs: 96 , rel: 30 , size: 21) +
| | | | b (abs: 88 , rel: 8 , size: 13) +
| | | | x (abs: 82 , rel: 6 , size: 6) +
| | | | b (abs: 118 , rel: 8 , size: 21) +
| | | | x (abs: 110 , rel: 8 , size: 13) +
| | | | b (abs: 104 , rel: 6 , size: 6) +
| | | | a (abs: 206 , rel: 8 , size: 78) +
| | | | b (abs: 190 , rel: 16 , size: 63) +
| | | | test3 (abs: 136 , rel: 54 , size: 10)+
| | | | x (abs: 160 , rel: 30 , size: 21) +
| | | | b (abs: 152 , rel: 8 , size: 13) +
| | | | x (abs: 146 , rel: 6 , size: 6) +
| | | | b (abs: 182 , rel: 8 , size: 21) +
| | | | x (abs: 174 , rel: 8 , size: 13) +
| | | | b (abs: 168 , rel: 6 , size: 6) +
| | | | d (abs: 200 , rel: 6 , size: 6) +
| | | |
root (abs: 66 , rel: 0 , size: 76) +| /root//x//b | i | | root (abs: 250 , rel: 0 , size: 260) +
x (abs: 54 , rel: 12 , size: 65) +| | | | x (abs: 238 , rel: 12 , size: 249) +
a (abs: 0 , rel: 54 , size: 6) +| | | | a (abs: 0 , rel: 238 , size: 6) +
b (abs: 6 , rel: 48 , size: 6) +| | | | b (abs: 50 , rel: 188 , size: 52) +
b (abs: 18 , rel: 36 , size: 13) +| | | | x (abs: 20 , rel: 30 , size: 21) +
c (abs: 12 , rel: 6 , size: 6) +| | | | b (abs: 12 , rel: 8 , size: 13) +
x (abs: 40 , rel: 14 , size: 22) +| | | | x (abs: 6 , rel: 6 , size: 6) +
b (abs: 32 , rel: 8 , size: 14) +| | | | b (abs: 42 , rel: 8 , size: 21) +
@i (abs: 25 , rel: 7 , size: 6) +| | | | x (abs: 34 , rel: 8 , size: 13) +
b (abs: 48 , rel: 6 , size: 6) +| | | | b (abs: 28 , rel: 6 , size: 6) +
| | | | b (abs: 108 , rel: 130 , size: 59) +
| | | | c (abs: 58 , rel: 50 , size: 6) +
| | | | x (abs: 78 , rel: 30 , size: 21) +
| | | | b (abs: 70 , rel: 8 , size: 13) +
| | | | x (abs: 64 , rel: 6 , size: 6) +
| | | | b (abs: 100 , rel: 8 , size: 21) +
| | | | x (abs: 92 , rel: 8 , size: 13) +
| | | | b (abs: 86 , rel: 6 , size: 6) +
| | | | x (abs: 178 , rel: 60 , size: 68) +
| | | | b (abs: 168 , rel: 10 , size: 60) +
| | | | @i (abs: 117 , rel: 51 , size: 6) +
| | | | x (abs: 138 , rel: 30 , size: 21) +
| | | | b (abs: 130 , rel: 8 , size: 13) +
| | | | x (abs: 124 , rel: 6 , size: 6) +
| | | | b (abs: 160 , rel: 8 , size: 21) +
| | | | x (abs: 152 , rel: 8 , size: 13) +
| | | | b (abs: 146 , rel: 6 , size: 6) +
| | | | b (abs: 230 , rel: 8 , size: 52) +
| | | | x (abs: 200 , rel: 30 , size: 21) +
| | | | b (abs: 192 , rel: 8 , size: 13) +
| | | | x (abs: 186 , rel: 6 , size: 6) +
| | | | b (abs: 222 , rel: 8 , size: 21) +
| | | | x (abs: 214 , rel: 8 , size: 13) +
| | | | b (abs: 208 , rel: 6 , size: 6) +
| | | |
(13 rows)
-- And finally test node removal
drop table a;
create table a (i int, data doc, targ_path xml.path);
insert into a values
(1, '', '/root/x/b'),
(2, '', '/root//x/b'),
(3, '', '/root//x/b'),
(4, '', '/root//x//b'),
(5, '', '/root//x//b'),
(6, '', '/root//x//b'),
(7, '', '/root//x//b'),
(8, '', '/root//x//b'),
(9, '', '/a/b//@id'),
(10, '', '//@id'),
(11, '', '//@*');
select node_debug_print(data), targ_path, node_debug_print(xml.remove(data, targ_path))
from a
order by a.i;
node_debug_print | targ_path | node_debug_print
-------------------------------------------+-------------+------------------------------------------
root (abs: 84 , rel: 0 , size: 94) +| /root/x/b | root (abs: 40 , rel: 0 , size: 50) +
x (abs: 76 , rel: 8 , size: 84) +| | x (abs: 32 , rel: 8 , size: 39) +
b (abs: 36 , rel: 40 , size: 44) +| | a (abs: 24 , rel: 8 , size: 32) +
test1 (abs: 0 , rel: 36 , size: 10) +| | b (abs: 10 , rel: 14 , size: 17) +
x (abs: 28 , rel: 8 , size: 25) +| | test3 (abs: 0 , rel: 10 , size: 10) +
b (abs: 20 , rel: 8 , size: 17) +| | d (abs: 18 , rel: 6 , size: 6) +
test2 (abs: 10 , rel: 10 , size: 10)+| |
a (abs: 68 , rel: 8 , size: 32) +| |
b (abs: 54 , rel: 14 , size: 17) +| |
test3 (abs: 44 , rel: 10 , size: 10) +| |
d (abs: 62 , rel: 6 , size: 6) +| |
| |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | root (abs: 40 , rel: 0 , size: 50) +
x (abs: 76 , rel: 8 , size: 84) +| | x (abs: 32 , rel: 8 , size: 39) +
b (abs: 36 , rel: 40 , size: 44) +| | a (abs: 24 , rel: 8 , size: 32) +
test1 (abs: 0 , rel: 36 , size: 10) +| | b (abs: 10 , rel: 14 , size: 17) +
x (abs: 28 , rel: 8 , size: 25) +| | test3 (abs: 0 , rel: 10 , size: 10) +
b (abs: 20 , rel: 8 , size: 17) +| | d (abs: 18 , rel: 6 , size: 6) +
test2 (abs: 10 , rel: 10 , size: 10)+| |
a (abs: 68 , rel: 8 , size: 32) +| |
b (abs: 54 , rel: 14 , size: 17) +| |
test3 (abs: 44 , rel: 10 , size: 10) +| |
d (abs: 62 , rel: 6 , size: 6) +| |
| |
root (abs: 84 , rel: 0 , size: 94) +| /root//x/b | root (abs: 64 , rel: 0 , size: 74) +
x (abs: 76 , rel: 8 , size: 84) +| | x (abs: 56 , rel: 8 , size: 64) +
c (abs: 36 , rel: 40 , size: 44) +| | c (abs: 16 , rel: 40 , size: 24) +
test1 (abs: 0 , rel: 36 , size: 10) +| | test1 (abs: 0 , rel: 16 , size: 10) +
x (abs: 28 , rel: 8 , size: 25) +| | x (abs: 10 , rel: 6 , size: 6) +
b (abs: 20 , rel: 8 , size: 17) +| | a (abs: 48 , rel: 8 , size: 32) +
test2 (abs: 10 , rel: 10 , size: 10)+| | b (abs: 34 , rel: 14 , size: 17) +
a (abs: 68 , rel: 8 , size: 32) +| | test3 (abs: 24 , rel: 10 , size: 10)+
b (abs: 54 , rel: 14 , size: 17) +| | d (abs: 42 , rel: 6 , size: 6) +
test3 (abs: 44 , rel: 10 , size: 10) +| |
d (abs: 62 , rel: 6 , size: 6) +| |
| |
root (abs: 84 , rel: 0 , size: 94) +| /root//x//b | root (abs: 40 , rel: 0 , size: 50) +
x (abs: 74 , rel: 10 , size: 83) +| | x (abs: 32 , rel: 8 , size: 40) +
c (abs: 28 , rel: 46 , size: 36) +| | c (abs: 10 , rel: 22 , size: 17) +
test1 (abs: 0 , rel: 28 , size: 10) +| | test1 (abs: 0 , rel: 10 , size: 10) +
b (abs: 20 , rel: 8 , size: 17) +| | a (abs: 24 , rel: 8 , size: 13) +
test2 (abs: 10 , rel: 10 , size: 10) +| | d (abs: 18 , rel: 6 , size: 6) +
a (abs: 60 , rel: 14 , size: 32) +| |
b (abs: 46 , rel: 14 , size: 17) +| |
test3 (abs: 36 , rel: 10 , size: 10) +| |
d (abs: 54 , rel: 6 , size: 6) +| |
b (abs: 68 , rel: 6 , size: 6) +| |
| |
root (abs: 90 , rel: 0 , size: 100) +| /root//x//b | root (abs: 40 , rel: 0 , size: 50) +
x (abs: 80 , rel: 10 , size: 90) +| | x (abs: 32 , rel: 8 , size: 40) +
c (abs: 28 , rel: 52 , size: 36) +| | c (abs: 10 , rel: 22 , size: 17) +
test1 (abs: 0 , rel: 28 , size: 10) +| | test1 (abs: 0 , rel: 10 , size: 10) +
b (abs: 20 , rel: 8 , size: 17) +| | a (abs: 24 , rel: 8 , size: 13) +
test2 (abs: 10 , rel: 10 , size: 10) +| | d (abs: 18 , rel: 6 , size: 6) +
a (abs: 60 , rel: 20 , size: 32) +| |
b (abs: 46 , rel: 14 , size: 17) +| |
test3 (abs: 36 , rel: 10 , size: 10) +| |
d (abs: 54 , rel: 6 , size: 6) +| |
b (abs: 68 , rel: 12 , size: 6) +| |
b (abs: 74 , rel: 6 , size: 6) +| |
| |
root (abs: 98 , rel: 0 , size: 108) +| /root//x//b | root (abs: 40 , rel: 0 , size: 50) +
x (abs: 88 , rel: 10 , size: 98) +| | x (abs: 32 , rel: 8 , size: 40) +
c (abs: 28 , rel: 60 , size: 36) +| | c (abs: 10 , rel: 22 , size: 17) +
test1 (abs: 0 , rel: 28 , size: 10) +| | test1 (abs: 0 , rel: 10 , size: 10) +
b (abs: 20 , rel: 8 , size: 17) +| | a (abs: 24 , rel: 8 , size: 13) +
test2 (abs: 10 , rel: 10 , size: 10) +| | d (abs: 18 , rel: 6 , size: 6) +
a (abs: 60 , rel: 28 , size: 32) +| |
b (abs: 46 , rel: 14 , size: 17) +| |
test3 (abs: 36 , rel: 10 , size: 10) +| |
d (abs: 54 , rel: 6 , size: 6) +| |
b (abs: 74 , rel: 14 , size: 13) +| |
@i (abs: 68 , rel: 6 , size: 6) +| |
b (abs: 82 , rel: 6 , size: 6) +| |
| |
root (abs: 106 , rel: 0 , size: 116) +| /root//x//b | root (abs: 40 , rel: 0 , size: 50) +
x (abs: 96 , rel: 10 , size: 106) +| | x (abs: 32 , rel: 8 , size: 40) +
c (abs: 28 , rel: 68 , size: 36) +| | c (abs: 10 , rel: 22 , size: 17) +
test1 (abs: 0 , rel: 28 , size: 10) +| | test1 (abs: 0 , rel: 10 , size: 10) +
b (abs: 20 , rel: 8 , size: 17) +| | a (abs: 24 , rel: 8 , size: 13) +
test2 (abs: 10 , rel: 10 , size: 10) +| | d (abs: 18 , rel: 6 , size: 6) +
a (abs: 60 , rel: 36 , size: 32) +| |
b (abs: 46 , rel: 14 , size: 17) +| |
test3 (abs: 36 , rel: 10 , size: 10) +| |
d (abs: 54 , rel: 6 , size: 6) +| |
b (abs: 74 , rel: 22 , size: 13) +| |
@i (abs: 68 , rel: 6 , size: 6) +| |
b (abs: 88 , rel: 8 , size: 14) +| |
@i (abs: 81 , rel: 7 , size: 6) +| |
| |
root (abs: 106 , rel: 0 , size: 116) +| /root//x//b | root (abs: 40 , rel: 0 , size: 50) +
x (abs: 96 , rel: 10 , size: 106) +| | x (abs: 32 , rel: 8 , size: 40) +
c (abs: 28 , rel: 68 , size: 36) +| | c (abs: 10 , rel: 22 , size: 17) +
test1 (abs: 0 , rel: 28 , size: 10) +| | test1 (abs: 0 , rel: 10 , size: 10) +
b (abs: 20 , rel: 8 , size: 17) +| | a (abs: 24 , rel: 8 , size: 13) +
test2 (abs: 10 , rel: 10 , size: 10) +| | d (abs: 18 , rel: 6 , size: 6) +
a (abs: 60 , rel: 36 , size: 32) +| |
b (abs: 46 , rel: 14 , size: 17) +| |
test3 (abs: 36 , rel: 10 , size: 10) +| |
d (abs: 54 , rel: 6 , size: 6) +| |
b (abs: 74 , rel: 22 , size: 13) +| |
c (abs: 68 , rel: 6 , size: 6) +| |
b (abs: 88 , rel: 8 , size: 13) +| |
c (abs: 82 , rel: 6 , size: 6) +| |
| |
a (abs: 44 , rel: 0 , size: 52) +| /a/b//@id | a (abs: 28 , rel: 0 , size: 36) +
b (abs: 14 , rel: 30 , size: 22) +| | b (abs: 6 , rel: 22 , size: 13) +
@d (abs: 0 , rel: 14 , size: 6) +| | @d (abs: 0 , rel: 6 , size: 6) +
@id (abs: 6 , rel: 8 , size: 7) +| | b (abs: 20 , rel: 8 , size: 14) +
b (abs: 36 , rel: 8 , size: 22) +| | @d (abs: 13 , rel: 7 , size: 6) +
@d (abs: 22 , rel: 14 , size: 6) +| |
@id (abs: 28 , rel: 8 , size: 7) +| |
| |
a (abs: 44 , rel: 0 , size: 52) +| //@id | a (abs: 28 , rel: 0 , size: 36) +
b (abs: 14 , rel: 30 , size: 22) +| | b (abs: 6 , rel: 22 , size: 13) +
@d (abs: 0 , rel: 14 , size: 6) +| | @d (abs: 0 , rel: 6 , size: 6) +
@id (abs: 6 , rel: 8 , size: 7) +| | b (abs: 20 , rel: 8 , size: 14) +
b (abs: 36 , rel: 8 , size: 22) +| | @d (abs: 13 , rel: 7 , size: 6) +
@d (abs: 22 , rel: 14 , size: 6) +| |
@id (abs: 28 , rel: 8 , size: 7) +| |
| |
a (abs: 44 , rel: 0 , size: 52) +| //@* | a (abs: 12 , rel: 0 , size: 20) +
b (abs: 14 , rel: 30 , size: 22) +| | b (abs: 0 , rel: 12 , size: 6) +
@d (abs: 0 , rel: 14 , size: 6) +| | b (abs: 6 , rel: 6 , size: 6) +
@id (abs: 6 , rel: 8 , size: 7) +| |
b (abs: 36 , rel: 8 , size: 22) +| |
@d (abs: 22 , rel: 14 , size: 6) +| |
@id (abs: 28 , rel: 8 , size: 7) +| |
| |
(11 rows)
drop table a;
select xml.remove('', '/a/b/c');
remove
-----------------
(1 row)
select xml.add(
'',
'/a',
'',
'b'
);
add
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
(1 row)