Commit 4d33c742 authored by Heinz Wiesinger's avatar Heinz Wiesinger Committed by Vicențiu-Marian Ciorbaru

MDEV-10980: Fix reverse queries in OQGRAPH.

parent 172cc70b
...@@ -897,12 +897,12 @@ namespace open_query ...@@ -897,12 +897,12 @@ namespace open_query
switch (ALGORITHM & op) switch (ALGORITHM & op)
{ {
case DIJKSTRAS: case DIJKSTRAS:
dijkstra_shortest_paths_no_init(share->g, *dest, dijkstra_shortest_paths_no_init(r, *dest,
make_lazy_property_map(p, identity_initializer<Vertex>()), make_lazy_property_map(p, identity_initializer<Vertex>()),
make_lazy_property_map(d, value_initializer<EdgeWeight>( make_lazy_property_map(d, value_initializer<EdgeWeight>(
(std::numeric_limits<EdgeWeight>::max)())), (std::numeric_limits<EdgeWeight>::max)())),
get(edge_weight, share->g), get(edge_weight, r),
get(vertex_index, share->g), get(vertex_index, r),
std::less<EdgeWeight>(), std::less<EdgeWeight>(),
closed_plus<EdgeWeight>(), closed_plus<EdgeWeight>(),
EdgeWeight(), EdgeWeight(),
...@@ -913,10 +913,10 @@ namespace open_query ...@@ -913,10 +913,10 @@ namespace open_query
static_cast<stack_cursor*>(cursor) static_cast<stack_cursor*>(cursor)
) )
), ),
make_two_bit_judy_map(get(vertex_index, share->g))); make_two_bit_judy_map(get(vertex_index, r)));
break; break;
case BREADTH_FIRST: case BREADTH_FIRST:
breadth_first_visit(share->g, *dest, Q, breadth_first_visit(r, *dest, Q,
make_bfs_visitor( make_bfs_visitor(
std::make_pair( std::make_pair(
record_predecessors( record_predecessors(
...@@ -935,7 +935,7 @@ namespace open_query ...@@ -935,7 +935,7 @@ namespace open_query
) )
)) ))
), ),
make_two_bit_judy_map(get(vertex_index, share->g))); make_two_bit_judy_map(get(vertex_index, r)));
break; break;
default: default:
abort(); abort();
......
...@@ -41,19 +41,19 @@ dijkstras 3 NULL 256 2 2 ...@@ -41,19 +41,19 @@ dijkstras 3 NULL 256 2 2
dijkstras 3 NULL 0 1 3 dijkstras 3 NULL 0 1 3
SELECT * FROM graph WHERE latch = 'dijkstras' AND destid = 1; SELECT * FROM graph WHERE latch = 'dijkstras' AND destid = 1;
latch origid destid weight seq linkid latch origid destid weight seq linkid
dijkstras NULL 1 784 4 4 dijkstras NULL 1 65808 4 4
dijkstras NULL 1 272 3 3 dijkstras NULL 1 272 3 3
dijkstras NULL 1 16 2 2 dijkstras NULL 1 16 2 2
dijkstras NULL 1 0 1 1 dijkstras NULL 1 0 1 1
SELECT * FROM graph WHERE latch = 'dijkstras' AND destid = 2; SELECT * FROM graph WHERE latch = 'dijkstras' AND destid = 2;
latch origid destid weight seq linkid latch origid destid weight seq linkid
dijkstras NULL 2 768 4 4 dijkstras NULL 2 65792 4 4
dijkstras NULL 2 256 3 3 dijkstras NULL 2 256 3 3
dijkstras NULL 2 16 2 1 dijkstras NULL 2 16 2 1
dijkstras NULL 2 0 1 2 dijkstras NULL 2 0 1 2
SELECT * FROM graph WHERE latch = 'dijkstras' AND destid = 3; SELECT * FROM graph WHERE latch = 'dijkstras' AND destid = 3;
latch origid destid weight seq linkid latch origid destid weight seq linkid
dijkstras NULL 3 1024 4 4 dijkstras NULL 3 65536 4 4
dijkstras NULL 3 272 3 1 dijkstras NULL 3 272 3 1
dijkstras NULL 3 256 2 2 dijkstras NULL 3 256 2 2
dijkstras NULL 3 0 1 3 dijkstras NULL 3 0 1 3
......
...@@ -464,16 +464,16 @@ breadth_first NULL 4 1 2 3 ...@@ -464,16 +464,16 @@ breadth_first NULL 4 1 2 3
breadth_first NULL 4 0 1 4 breadth_first NULL 4 0 1 4
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 5 1 3 7
breadth_first NULL 5 1 2 6 breadth_first NULL 5 1 2 6
breadth_first NULL 5 0 1 5 breadth_first NULL 5 0 1 5
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 6 2 3 7
breadth_first NULL 6 1 2 5 breadth_first NULL 6 1 2 5
breadth_first NULL 6 0 1 6 breadth_first NULL 6 0 1 6
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 7 2 3 6
breadth_first NULL 7 1 2 5
breadth_first NULL 7 0 1 7 breadth_first NULL 7 0 1 7
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8;
latch origid destid weight seq linkid latch origid destid weight seq linkid
...@@ -482,18 +482,18 @@ latch origid destid weight seq linkid ...@@ -482,18 +482,18 @@ latch origid destid weight seq linkid
breadth_first NULL 9 0 1 9 breadth_first NULL 9 0 1 9
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 10 2 3 12 breadth_first NULL 10 2 3 11
breadth_first NULL 10 1 2 11 breadth_first NULL 10 1 2 12
breadth_first NULL 10 0 1 10 breadth_first NULL 10 0 1 10
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 11 2 3 10 breadth_first NULL 11 2 3 12
breadth_first NULL 11 1 2 12 breadth_first NULL 11 1 2 10
breadth_first NULL 11 0 1 11 breadth_first NULL 11 0 1 11
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 12 2 3 11 breadth_first NULL 12 2 3 10
breadth_first NULL 12 1 2 10 breadth_first NULL 12 1 2 11
breadth_first NULL 12 0 1 12 breadth_first NULL 12 0 1 12
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 1; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 1;
latch origid destid weight seq linkid latch origid destid weight seq linkid
...@@ -511,26 +511,26 @@ latch origid destid weight seq linkid ...@@ -511,26 +511,26 @@ latch origid destid weight seq linkid
breadth_first NULL 4 1 2 3 breadth_first NULL 4 1 2 3
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5 and weight = 1; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5 and weight = 1;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 5 1 3 7
breadth_first NULL 5 1 2 6 breadth_first NULL 5 1 2 6
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6 and weight = 1; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6 and weight = 1;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 6 1 2 5 breadth_first NULL 6 1 2 5
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7 and weight = 1; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7 and weight = 1;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 7 1 2 5
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8 and weight = 1; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8 and weight = 1;
latch origid destid weight seq linkid latch origid destid weight seq linkid
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 9 and weight = 1; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 9 and weight = 1;
latch origid destid weight seq linkid latch origid destid weight seq linkid
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10 and weight = 1; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10 and weight = 1;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 10 1 2 11 breadth_first NULL 10 1 2 12
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11 and weight = 1; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11 and weight = 1;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 11 1 2 12 breadth_first NULL 11 1 2 10
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12 and weight = 1; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12 and weight = 1;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 12 1 2 10 breadth_first NULL 12 1 2 11
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 2; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 2;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 1 2 4 4 breadth_first NULL 1 2 4 4
...@@ -547,22 +547,22 @@ SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5 and weight = 2; ...@@ -547,22 +547,22 @@ SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5 and weight = 2;
latch origid destid weight seq linkid latch origid destid weight seq linkid
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6 and weight = 2; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6 and weight = 2;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 6 2 3 7
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7 and weight = 2; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7 and weight = 2;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 7 2 3 6
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8 and weight = 2; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8 and weight = 2;
latch origid destid weight seq linkid latch origid destid weight seq linkid
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 9 and weight = 2; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 9 and weight = 2;
latch origid destid weight seq linkid latch origid destid weight seq linkid
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10 and weight = 2; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10 and weight = 2;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 10 2 3 12 breadth_first NULL 10 2 3 11
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11 and weight = 2; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11 and weight = 2;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 11 2 3 10 breadth_first NULL 11 2 3 12
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12 and weight = 2; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12 and weight = 2;
latch origid destid weight seq linkid latch origid destid weight seq linkid
breadth_first NULL 12 2 3 11 breadth_first NULL 12 2 3 10
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 3; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 3;
latch origid destid weight seq linkid latch origid destid weight seq linkid
SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 2 and weight = 3; SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 2 and weight = 3;
...@@ -838,8 +838,8 @@ latch origid destid weight seq linkid ...@@ -838,8 +838,8 @@ latch origid destid weight seq linkid
2 NULL 1 0 1 1 2 NULL 1 0 1 1
SELECT * FROM graph WHERE latch = '2' AND destid = 12; SELECT * FROM graph WHERE latch = '2' AND destid = 12;
latch origid destid weight seq linkid latch origid destid weight seq linkid
2 NULL 12 2 3 11 2 NULL 12 2 3 10
2 NULL 12 1 2 10 2 NULL 12 1 2 11
2 NULL 12 0 1 12 2 NULL 12 0 1 12
SELECT * FROM graph WHERE latch = '2' AND destid = 1 and weight = 1; SELECT * FROM graph WHERE latch = '2' AND destid = 1 and weight = 1;
latch origid destid weight seq linkid latch origid destid weight seq linkid
...@@ -997,16 +997,16 @@ dijkstras NULL 4 1 2 3 ...@@ -997,16 +997,16 @@ dijkstras NULL 4 1 2 3
dijkstras NULL 4 0 1 4 dijkstras NULL 4 0 1 4
SELECT * FROM graph WHERE latch='dijkstras' AND destid=5; SELECT * FROM graph WHERE latch='dijkstras' AND destid=5;
latch origid destid weight seq linkid latch origid destid weight seq linkid
dijkstras NULL 5 1 3 7
dijkstras NULL 5 1 2 6 dijkstras NULL 5 1 2 6
dijkstras NULL 5 0 1 5 dijkstras NULL 5 0 1 5
SELECT * FROM graph WHERE latch='dijkstras' AND destid=6; SELECT * FROM graph WHERE latch='dijkstras' AND destid=6;
latch origid destid weight seq linkid latch origid destid weight seq linkid
dijkstras NULL 6 2 3 7
dijkstras NULL 6 1 2 5 dijkstras NULL 6 1 2 5
dijkstras NULL 6 0 1 6 dijkstras NULL 6 0 1 6
SELECT * FROM graph WHERE latch='dijkstras' AND destid=7; SELECT * FROM graph WHERE latch='dijkstras' AND destid=7;
latch origid destid weight seq linkid latch origid destid weight seq linkid
dijkstras NULL 7 2 3 6
dijkstras NULL 7 1 2 5
dijkstras NULL 7 0 1 7 dijkstras NULL 7 0 1 7
SELECT * FROM graph WHERE latch='dijkstras' AND destid=8; SELECT * FROM graph WHERE latch='dijkstras' AND destid=8;
latch origid destid weight seq linkid latch origid destid weight seq linkid
...@@ -1015,18 +1015,18 @@ latch origid destid weight seq linkid ...@@ -1015,18 +1015,18 @@ latch origid destid weight seq linkid
dijkstras NULL 9 0 1 9 dijkstras NULL 9 0 1 9
SELECT * FROM graph WHERE latch='dijkstras' AND destid=10; SELECT * FROM graph WHERE latch='dijkstras' AND destid=10;
latch origid destid weight seq linkid latch origid destid weight seq linkid
dijkstras NULL 10 2 3 12 dijkstras NULL 10 2 3 11
dijkstras NULL 10 1 2 11 dijkstras NULL 10 1 2 12
dijkstras NULL 10 0 1 10 dijkstras NULL 10 0 1 10
SELECT * FROM graph WHERE latch='dijkstras' AND destid=11; SELECT * FROM graph WHERE latch='dijkstras' AND destid=11;
latch origid destid weight seq linkid latch origid destid weight seq linkid
dijkstras NULL 11 2 3 10 dijkstras NULL 11 2 3 12
dijkstras NULL 11 1 2 12 dijkstras NULL 11 1 2 10
dijkstras NULL 11 0 1 11 dijkstras NULL 11 0 1 11
SELECT * FROM graph WHERE latch='dijkstras' AND destid=12; SELECT * FROM graph WHERE latch='dijkstras' AND destid=12;
latch origid destid weight seq linkid latch origid destid weight seq linkid
dijkstras NULL 12 2 3 11 dijkstras NULL 12 2 3 10
dijkstras NULL 12 1 2 10 dijkstras NULL 12 1 2 11
dijkstras NULL 12 0 1 12 dijkstras NULL 12 0 1 12
# legacy string number # legacy string number
SELECT * FROM graph WHERE latch='1' AND origid=1 AND destid=1; SELECT * FROM graph WHERE latch='1' AND origid=1 AND destid=1;
...@@ -1172,16 +1172,16 @@ latch origid destid weight seq linkid ...@@ -1172,16 +1172,16 @@ latch origid destid weight seq linkid
1 NULL 4 0 1 4 1 NULL 4 0 1 4
SELECT * FROM graph WHERE latch='1' AND destid=5; SELECT * FROM graph WHERE latch='1' AND destid=5;
latch origid destid weight seq linkid latch origid destid weight seq linkid
1 NULL 5 1 3 7
1 NULL 5 1 2 6 1 NULL 5 1 2 6
1 NULL 5 0 1 5 1 NULL 5 0 1 5
SELECT * FROM graph WHERE latch='1' AND destid=6; SELECT * FROM graph WHERE latch='1' AND destid=6;
latch origid destid weight seq linkid latch origid destid weight seq linkid
1 NULL 6 2 3 7
1 NULL 6 1 2 5 1 NULL 6 1 2 5
1 NULL 6 0 1 6 1 NULL 6 0 1 6
SELECT * FROM graph WHERE latch='1' AND destid=7; SELECT * FROM graph WHERE latch='1' AND destid=7;
latch origid destid weight seq linkid latch origid destid weight seq linkid
1 NULL 7 2 3 6
1 NULL 7 1 2 5
1 NULL 7 0 1 7 1 NULL 7 0 1 7
SELECT * FROM graph WHERE latch='1' AND destid=8; SELECT * FROM graph WHERE latch='1' AND destid=8;
latch origid destid weight seq linkid latch origid destid weight seq linkid
...@@ -1190,18 +1190,18 @@ latch origid destid weight seq linkid ...@@ -1190,18 +1190,18 @@ latch origid destid weight seq linkid
1 NULL 9 0 1 9 1 NULL 9 0 1 9
SELECT * FROM graph WHERE latch='1' AND destid=10; SELECT * FROM graph WHERE latch='1' AND destid=10;
latch origid destid weight seq linkid latch origid destid weight seq linkid
1 NULL 10 2 3 12 1 NULL 10 2 3 11
1 NULL 10 1 2 11 1 NULL 10 1 2 12
1 NULL 10 0 1 10 1 NULL 10 0 1 10
SELECT * FROM graph WHERE latch='1' AND destid=11; SELECT * FROM graph WHERE latch='1' AND destid=11;
latch origid destid weight seq linkid latch origid destid weight seq linkid
1 NULL 11 2 3 10 1 NULL 11 2 3 12
1 NULL 11 1 2 12 1 NULL 11 1 2 10
1 NULL 11 0 1 11 1 NULL 11 0 1 11
SELECT * FROM graph WHERE latch='1' AND destid=12; SELECT * FROM graph WHERE latch='1' AND destid=12;
latch origid destid weight seq linkid latch origid destid weight seq linkid
1 NULL 12 2 3 11 1 NULL 12 2 3 10
1 NULL 12 1 2 10 1 NULL 12 1 2 11
1 NULL 12 0 1 12 1 NULL 12 0 1 12
SELECT count(*) FROM graph; SELECT count(*) FROM graph;
count(*) count(*)
...@@ -1280,9 +1280,6 @@ dijkstras 1 NULL 1 2 2 ...@@ -1280,9 +1280,6 @@ dijkstras 1 NULL 1 2 2
dijkstras 1 NULL 0 1 1 dijkstras 1 NULL 0 1 1
SELECT * FROM graph WHERE latch='dijkstras' AND destid=1; SELECT * FROM graph WHERE latch='dijkstras' AND destid=1;
latch origid destid weight seq linkid latch origid destid weight seq linkid
dijkstras NULL 1 4 7 18
dijkstras NULL 1 3 6 17
dijkstras NULL 1 3 5 16
dijkstras NULL 1 2 4 4 dijkstras NULL 1 2 4 4
dijkstras NULL 1 1 3 3 dijkstras NULL 1 1 3 3
dijkstras NULL 1 1 2 2 dijkstras NULL 1 1 2 2
......
...@@ -154,12 +154,12 @@ namespace oqgraph3 ...@@ -154,12 +154,12 @@ namespace oqgraph3
typedef std::input_iterator_tag iterator_category; typedef std::input_iterator_tag iterator_category;
in_edge_iterator() { } in_edge_iterator() { }
in_edge_iterator(const cursor_ptr& cursor) : _cursor(cursor) { } in_edge_iterator(const cursor_ptr& cursor) : _cursor(cursor) { }
value_type operator*() { return value_type(_cursor); } value_type operator*() const { return value_type(_cursor); }
self& operator++() { _cursor->seek_next(); return *this; } self& operator++() { _cursor->seek_next(); return *this; }
self operator++(int) self operator++(int)
{ cursor_ptr t(new cursor(*_cursor)); ++(*this); return in_edge_iterator(t); } { cursor_ptr t(new cursor(*_cursor)); ++(*this); return in_edge_iterator(t); }
bool operator==(const self& x) { return _cursor == x._cursor; } bool operator==(const self& x) const { return _cursor == x._cursor; }
bool operator!=(const self& x) { return _cursor != x._cursor; } bool operator!=(const self& x) const { return _cursor != x._cursor; }
cursor_ptr _cursor; cursor_ptr _cursor;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment