summaryrefslogtreecommitdiff
path: root/src/server/db_controller.py
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2014-12-23 23:15:54 +0200
committerAlon Levy <alon@pobox.com>2014-12-23 23:15:54 +0200
commit70c6895bc292e67cd2d147d8d595746d66de537f (patch)
treee21c1e22ed55f3c1add5b4af5f9e9a101d8d7732 /src/server/db_controller.py
parent60d3cbb5dac88be86237cb933c7fbfc8bc03ad7b (diff)
server: fix deletions to return node/relationship id just once per row; client currently doesn't use this but assumes success
Diffstat (limited to 'src/server/db_controller.py')
-rw-r--r--src/server/db_controller.py36
1 files changed, 29 insertions, 7 deletions
diff --git a/src/server/db_controller.py b/src/server/db_controller.py
index b9e1ef8d..6a85c407 100644
--- a/src/server/db_controller.py
+++ b/src/server/db_controller.py
@@ -135,6 +135,8 @@ class DBO_topo_diff_commit(DB_composed_op):
self.n_add_map = len(n_add_map) > 0
self.l_add_map = len(l_add_map) > 0
+ self.l_rm_set = len(l_rm_set) > 0
+ self.n_rm_set = len(n_rm_set) > 0
#
# [!] order critical
#
@@ -157,6 +159,8 @@ class DBO_topo_diff_commit(DB_composed_op):
def process_result_set(self):
ret_n_set = []
ret_l_set = []
+ ret_n_rm = []
+ ret_l_rm = []
it = iter(self)
if self.n_add_map:
@@ -178,8 +182,22 @@ class DBO_topo_diff_commit(DB_composed_op):
ret_l_set.append(l)
+ if self.l_rm_set:
+ for _, _, row_set in it.next():
+ for l_id in row_set:
+ print("l_id: %r" % l_id)
+ ret_l_rm.extend(l_id)
+
+ if self.n_rm_set:
+ for _, _, row_set in it.next():
+ for n_id in row_set:
+ print("n_id: %r" % n_id)
+ ret_n_rm.extend(n_id)
+
return {'node_set': ret_n_set,
- 'link_set': ret_l_set }
+ 'link_set': ret_l_set,
+ 'node_rm': ret_n_rm,
+ 'link_rm': ret_l_rm}
class DBO_attr_diff_commit(DB_op):
@@ -424,16 +442,19 @@ class DBO_rm_node_set(DB_op):
if rm_links:
q_arr = ['match (n)',
- 'where n.id in {id_set}',
+ 'with n, n.id as n_id',
+ 'where n_id in {id_set}',
'optional match (n)-[r]-()',
+ 'with n, n_id, r, r.id as r_id',
'delete n,r',
- 'return {id_set}'
+ 'return n_id, collect(r_id)'
]
else:
q_arr = ['match (n)',
- 'where n.id in {id_set}',
+ 'with n, n.id as n_id',
+ 'where n_id in {id_set}',
'delete n',
- 'return {id_set}'
+ 'return n_id'
]
q = ' '.join(q_arr)
@@ -453,9 +474,10 @@ class DBO_rm_link_set(DB_op):
super(DBO_rm_link_set, self).__init__()
q_arr = ['match ()-[r]->()',
- 'where r.id in {id_set}',
+ 'with r, r.id as r_id',
+ 'where r_id in {id_set}',
'delete r',
- 'return {id_set}'
+ 'return r_id'
]
q = ' '.join(q_arr)