gqlite 1.2.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/ext/Cargo.toml +20 -0
  3. data/ext/gqlitedb/Cargo.toml +77 -0
  4. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/benches/common/pokec.rs +30 -20
  5. data/ext/gqlitedb/gqlite_bench_data/README.MD +6 -0
  6. data/ext/gqlitedb/gqlite_bench_data/scripts/generate_smaller_pokec.rb +85 -0
  7. data/ext/gqlitedb/gqlite_bench_data/scripts/to_efficient_pokec.rb +34 -0
  8. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/aggregators/arithmetic.rs +1 -0
  9. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/aggregators/stats.rs +27 -49
  10. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/aggregators.rs +7 -7
  11. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/capi.rs +10 -9
  12. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/compiler/expression_analyser.rs +6 -4
  13. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/compiler/variables_manager.rs +27 -31
  14. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/compiler.rs +37 -41
  15. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/connection.rs +42 -84
  16. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/error.rs +105 -34
  17. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/containers.rs +21 -26
  18. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/edge.rs +2 -2
  19. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/math.rs +2 -2
  20. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/node.rs +1 -1
  21. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/path.rs +15 -20
  22. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/scalar.rs +2 -2
  23. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/value.rs +6 -6
  24. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions.rs +20 -20
  25. data/ext/gqlitedb/src/graph.rs +11 -0
  26. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/interpreter/evaluators.rs +160 -194
  27. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/interpreter/instructions.rs +2 -1
  28. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/lib.rs +9 -4
  29. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/parser/ast.rs +44 -52
  30. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/parser/gql.pest +1 -1
  31. data/ext/{gqliterb/vendor/gqlitedb/src/parser/parser.rs → gqlitedb/src/parser/parser_impl.rs} +50 -28
  32. data/ext/gqlitedb/src/parser.rs +4 -0
  33. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/prelude.rs +3 -2
  34. data/ext/gqlitedb/src/query_result.rs +88 -0
  35. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/store/redb.rs +226 -148
  36. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/store/sqlite.rs +111 -128
  37. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/store.rs +22 -22
  38. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/evaluators.rs +32 -76
  39. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/store.rs +95 -111
  40. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/templates/ast.rs +29 -29
  41. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/templates/programs.rs +4 -4
  42. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/value/compare.rs +13 -20
  43. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/value/contains.rs +2 -2
  44. data/ext/gqlitedb/src/value.rs +225 -0
  45. data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/value_table.rs +15 -5
  46. data/ext/gqliterb/Cargo.toml +12 -35
  47. data/ext/gqliterb/src/lib.rs +60 -38
  48. data/ext/graphcore/Cargo.toml +19 -0
  49. data/ext/graphcore/README.MD +4 -0
  50. data/ext/graphcore/release.toml +1 -0
  51. data/ext/graphcore/src/error.rs +28 -0
  52. data/ext/{gqliterb/vendor/gqlitedb → graphcore}/src/graph.rs +134 -38
  53. data/ext/graphcore/src/lib.rs +16 -0
  54. data/ext/graphcore/src/prelude.rs +4 -0
  55. data/ext/{gqliterb/vendor/gqlitedb → graphcore}/src/serialize_with.rs +2 -2
  56. data/ext/graphcore/src/table.rs +272 -0
  57. data/ext/{gqliterb/vendor/gqlitedb → graphcore}/src/value/value_map.rs +44 -49
  58. data/ext/graphcore/src/value.rs +413 -0
  59. metadata +94 -83
  60. data/ext/gqliterb/.cargo/config.toml +0 -2
  61. data/ext/gqliterb/Cargo.lock +0 -1116
  62. data/ext/gqliterb/vendor/gqlitedb/Cargo.lock +0 -2115
  63. data/ext/gqliterb/vendor/gqlitedb/Cargo.toml +0 -138
  64. data/ext/gqliterb/vendor/gqlitedb/src/parser.rs +0 -4
  65. data/ext/gqliterb/vendor/gqlitedb/src/value.rs +0 -609
  66. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/askama.toml +0 -0
  67. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/benches/common/mod.rs +0 -0
  68. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/benches/pokec_divan.rs +0 -0
  69. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/benches/pokec_iai.rs +0 -0
  70. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/release.toml +0 -0
  71. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/aggregators/containers.rs +0 -0
  72. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/aggregators/count.rs +0 -0
  73. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/consts.rs +0 -0
  74. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/string.rs +0 -0
  75. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/interpreter/mod.rs +0 -0
  76. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/store/pgql.rs +0 -0
  77. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/compiler.rs +0 -0
  78. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/parser.rs +0 -0
  79. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/store/redb.rs +0 -0
  80. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/store/sqlite.rs +0 -0
  81. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/templates.rs +0 -0
  82. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests.rs +0 -0
  83. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/utils.rs +0 -0
  84. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/call_stats.sql +0 -0
  85. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/edge_count_for_node.sql +0 -0
  86. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/edge_create.sql +0 -0
  87. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/edge_delete.sql +0 -0
  88. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/edge_delete_by_nodes.sql +0 -0
  89. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/edge_select.sql +0 -0
  90. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/edge_update.sql +0 -0
  91. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/graph_create.sql +0 -0
  92. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/graph_delete.sql +0 -0
  93. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/metadata_create_table.sql +0 -0
  94. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/metadata_get.sql +0 -0
  95. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/metadata_set.sql +0 -0
  96. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/node_create.sql +0 -0
  97. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/node_delete.sql +0 -0
  98. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/node_select.sql +0 -0
  99. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/node_update.sql +0 -0
  100. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/table_exists.sql +0 -0
  101. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/upgrade_from_1_01.sql +0 -0
  102. /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/upgrade_graph_from_1_01.sql +0 -0
@@ -102,16 +102,16 @@ where
102
102
  {
103
103
  // Add two nodes
104
104
  let nodes = [
105
- graph::Node {
106
- labels: graph::labels!("hello", "world"),
107
- properties: value::map!("key" => 42i64),
108
- key: graph::Key::default(),
109
- },
110
- graph::Node {
111
- labels: graph::labels!("not"),
112
- properties: Default::default(),
113
- key: graph::Key::default(),
114
- },
105
+ graph::Node::new(
106
+ graph::Key::default(),
107
+ graph::labels!("hello", "world"),
108
+ value::value_map!("key" => 42i64),
109
+ ),
110
+ graph::Node::new(
111
+ graph::Key::default(),
112
+ graph::labels!("not"),
113
+ Default::default(),
114
+ ),
115
115
  ];
116
116
 
117
117
  check_stats(&store, None, 0, 0, 0, 0);
@@ -119,7 +119,7 @@ where
119
119
  let mut tx = store.begin_write().unwrap();
120
120
 
121
121
  store
122
- .create_nodes(tx.borrow_mut(), &"default".into(), nodes.iter())
122
+ .create_nodes(tx.borrow_mut(), "default", nodes.iter())
123
123
  .unwrap();
124
124
  tx.close().unwrap();
125
125
  check_stats(&store, None, 2, 0, 3, 1);
@@ -127,8 +127,8 @@ where
127
127
  let selected_nodes = store
128
128
  .select_nodes(
129
129
  store.begin_read().unwrap().borrow_mut(),
130
- &"default".into(),
131
- store::SelectNodeQuery::select_keys([nodes[0].key]),
130
+ "default",
131
+ store::SelectNodeQuery::select_keys([nodes[0].key()]),
132
132
  )
133
133
  .unwrap();
134
134
 
@@ -138,7 +138,7 @@ where
138
138
  let selected_nodes = store
139
139
  .select_nodes(
140
140
  store.begin_read().unwrap().borrow_mut(),
141
- &"default".into(),
141
+ "default",
142
142
  store::SelectNodeQuery::select_labels(["not".to_string()]),
143
143
  )
144
144
  .unwrap();
@@ -152,32 +152,28 @@ where
152
152
  TStore: store::Store,
153
153
  {
154
154
  // Add a node
155
- let node = graph::Node {
156
- labels: graph::labels!("hello", "world"),
157
- properties: value::map!("key" => 42i64),
158
- key: graph::Key::default(),
159
- };
155
+ let node = graph::Node::new(
156
+ graph::Key::default(),
157
+ graph::labels!("hello", "world"),
158
+ value::value_map!("key" => 42i64),
159
+ );
160
160
 
161
161
  check_stats(&store, None, 0, 0, 0, 0);
162
162
 
163
163
  let mut tx = store.begin_write().unwrap();
164
164
 
165
165
  store
166
- .create_nodes(
167
- tx.borrow_mut(),
168
- &"default".into(),
169
- vec![node.clone()].iter(),
170
- )
166
+ .create_nodes(tx.borrow_mut(), "default", vec![node.clone()].iter())
171
167
  .unwrap();
172
168
  tx.close().unwrap();
173
169
  check_stats(&store, None, 1, 0, 2, 1);
174
170
 
175
171
  // Modify node
176
- let modified_node = graph::Node {
177
- labels: graph::labels!("world"),
178
- properties: value::map!("key" => 12i64),
179
- key: node.key.clone(),
180
- };
172
+ let modified_node = graph::Node::new(
173
+ node.key().clone(),
174
+ graph::labels!("world"),
175
+ value::value_map!("key" => 12i64),
176
+ );
181
177
 
182
178
  let mut tx = store.begin_write().unwrap();
183
179
  store
@@ -189,7 +185,7 @@ where
189
185
  let selected_nodes = store
190
186
  .select_nodes(
191
187
  store.begin_read().unwrap().borrow_mut(),
192
- &"default".into(),
188
+ "default",
193
189
  store::SelectNodeQuery::select_all(),
194
190
  )
195
191
  .unwrap();
@@ -201,8 +197,8 @@ where
201
197
  store
202
198
  .delete_nodes(
203
199
  &mut tx,
204
- &"default".into(),
205
- store::SelectNodeQuery::select_keys([modified_node.key]),
200
+ "default",
201
+ store::SelectNodeQuery::select_keys([modified_node.key()]),
206
202
  true,
207
203
  )
208
204
  .unwrap();
@@ -215,40 +211,40 @@ fn test_select_edges<TStore>(store: TStore)
215
211
  where
216
212
  TStore: store::Store,
217
213
  {
218
- let source_node = graph::Node {
219
- labels: graph::labels!("hello"),
220
- properties: value::map!("key" => 42i64),
221
- key: graph::Key::default(),
222
- };
223
- let destination_node = graph::Node {
224
- labels: graph::labels!("world"),
225
- properties: value::map!("key" => 12i64),
226
- key: graph::Key::default(),
227
- };
228
- let edge = graph::Edge {
229
- source: source_node.clone(),
230
- destination: destination_node.clone(),
231
- key: graph::Key::default(),
232
- labels: vec!["!".into()],
233
- properties: value::map!("existence" => true),
234
- };
214
+ let source_node = graph::Node::new(
215
+ graph::Key::default(),
216
+ graph::labels!("hello"),
217
+ value::value_map!("key" => 42i64),
218
+ );
219
+ let destination_node = graph::Node::new(
220
+ graph::Key::default(),
221
+ graph::labels!("world"),
222
+ value::value_map!("key" => 12i64),
223
+ );
224
+ let edge = graph::SinglePath::new(
225
+ graph::Key::default(),
226
+ source_node.clone(),
227
+ vec!["!".into()],
228
+ value::value_map!("existence" => true),
229
+ destination_node.clone(),
230
+ );
235
231
 
236
232
  check_stats(&store, None, 0, 0, 0, 0);
237
233
 
238
234
  let mut tx = store.begin_write().unwrap();
239
235
  store
240
- .create_edges(tx.borrow_mut(), &"default".into(), [edge.clone()].iter())
236
+ .create_edges(tx.borrow_mut(), "default", [edge.clone()].iter())
241
237
  .expect_err("expect missing node");
242
238
  check_stats(&store, Some(&mut tx), 0, 0, 0, 0);
243
239
  store
244
240
  .create_nodes(
245
241
  tx.borrow_mut(),
246
- &"default".into(),
242
+ "default",
247
243
  [source_node, destination_node].iter(),
248
244
  )
249
245
  .unwrap();
250
246
  store
251
- .create_edges(tx.borrow_mut(), &"default".into(), [edge.clone()].iter())
247
+ .create_edges(tx.borrow_mut(), "default", [edge.clone()].iter())
252
248
  .unwrap();
253
249
  tx.close().unwrap();
254
250
  check_stats(&store, None, 2, 1, 2, 3);
@@ -256,20 +252,20 @@ where
256
252
  let selected_edges = store
257
253
  .select_edges(
258
254
  store.begin_read().unwrap().borrow_mut(),
259
- &"default".into(),
260
- store::SelectEdgeQuery::select_keys([edge.key]),
255
+ "default",
256
+ store::SelectEdgeQuery::select_keys([edge.key()]),
261
257
  graph::EdgeDirectivity::Directed,
262
258
  )
263
259
  .unwrap();
264
260
 
265
261
  assert_eq!(1, selected_edges.len());
266
- assert_eq!(edge, selected_edges[0].edge);
262
+ assert_eq!(edge, selected_edges[0].path);
267
263
  assert!(!selected_edges[0].reversed);
268
264
 
269
265
  let selected_edges = store
270
266
  .select_edges(
271
267
  store.begin_read().unwrap().borrow_mut(),
272
- &"default".into(),
268
+ "default",
273
269
  store::SelectEdgeQuery::select_source_destination_labels_properties(
274
270
  store::SelectNodeQuery::select_all(),
275
271
  vec![],
@@ -281,13 +277,13 @@ where
281
277
  .unwrap();
282
278
 
283
279
  assert_eq!(1, selected_edges.len());
284
- assert_eq!(edge, selected_edges[0].edge);
280
+ assert_eq!(edge, selected_edges[0].path);
285
281
  assert!(!selected_edges[0].reversed);
286
282
 
287
283
  let selected_edges = store
288
284
  .select_edges(
289
285
  store.begin_read().unwrap().borrow_mut(),
290
- &"default".into(),
286
+ "default",
291
287
  store::SelectEdgeQuery::select_source_destination_labels_properties(
292
288
  store::SelectNodeQuery::select_labels_properties(vec![], Default::default()),
293
289
  vec![],
@@ -299,19 +295,19 @@ where
299
295
  .unwrap();
300
296
 
301
297
  assert_eq!(1, selected_edges.len());
302
- assert_eq!(edge, selected_edges[0].edge);
298
+ assert_eq!(edge, selected_edges[0].path);
303
299
  assert!(!selected_edges[0].reversed);
304
300
 
305
301
  // Check reverse direction
306
302
  let selected_edges = store
307
303
  .select_edges(
308
304
  store.begin_read().unwrap().borrow_mut(),
309
- &"default".into(),
305
+ "default",
310
306
  store::SelectEdgeQuery::select_source_destination_labels_properties(
311
- store::SelectNodeQuery::select_keys(vec![edge.destination.key]),
307
+ store::SelectNodeQuery::select_keys(vec![edge.destination().key()]),
312
308
  vec![],
313
309
  Default::default(),
314
- store::SelectNodeQuery::select_keys(vec![edge.source.key]),
310
+ store::SelectNodeQuery::select_keys(vec![edge.source().key()]),
315
311
  ),
316
312
  graph::EdgeDirectivity::Directed,
317
313
  )
@@ -322,19 +318,19 @@ where
322
318
  let selected_edges = store
323
319
  .select_edges(
324
320
  store.begin_read().unwrap().borrow_mut(),
325
- &"default".into(),
321
+ "default",
326
322
  store::SelectEdgeQuery::select_source_destination_labels_properties(
327
- store::SelectNodeQuery::select_keys(vec![edge.destination.key]),
323
+ store::SelectNodeQuery::select_keys(vec![edge.destination().key()]),
328
324
  vec![],
329
325
  Default::default(),
330
- store::SelectNodeQuery::select_keys(vec![edge.source.key]),
326
+ store::SelectNodeQuery::select_keys(vec![edge.source().key()]),
331
327
  ),
332
328
  graph::EdgeDirectivity::Undirected,
333
329
  )
334
330
  .unwrap();
335
331
 
336
332
  assert_eq!(1, selected_edges.len());
337
- assert_eq!(edge, selected_edges[0].edge);
333
+ assert_eq!(edge, selected_edges[0].path);
338
334
  assert!(selected_edges[0].reversed);
339
335
  }
340
336
 
@@ -342,65 +338,63 @@ fn test_update_edges<TStore>(store: TStore)
342
338
  where
343
339
  TStore: store::Store,
344
340
  {
345
- let source_node = graph::Node {
346
- labels: graph::labels!("hello"),
347
- properties: value::map!("key" => 42i64),
348
- key: graph::Key::default(),
349
- };
350
- let destination_node = graph::Node {
351
- labels: graph::labels!("world"),
352
- properties: value::map!("key" => 12i64),
353
- key: graph::Key::default(),
354
- };
355
- let edge = graph::Edge {
356
- source: source_node.clone(),
357
- destination: destination_node.clone(),
358
- key: graph::Key::default(),
359
- labels: vec!["!".into()],
360
- properties: value::map!("existence" => true),
361
- };
341
+ let source_node = graph::Node::new(
342
+ graph::Key::default(),
343
+ graph::labels!("hello"),
344
+ value::value_map!("key" => 42i64),
345
+ );
346
+ let destination_node = graph::Node::new(
347
+ graph::Key::default(),
348
+ graph::labels!("world"),
349
+ value::value_map!("key" => 12i64),
350
+ );
351
+ let edge = graph::SinglePath::new(
352
+ graph::Key::default(),
353
+ source_node.clone(),
354
+ vec!["!".into()],
355
+ value::value_map!("existence" => true),
356
+ destination_node.clone(),
357
+ );
362
358
 
363
359
  check_stats(&store, None, 0, 0, 0, 0);
364
360
 
365
361
  // Insert edge in store
366
362
  let mut tx = store.begin_write().unwrap();
367
363
  store
368
- .create_edges(tx.borrow_mut(), &"default".into(), [edge.clone()].iter())
364
+ .create_edges(tx.borrow_mut(), "default", [edge.clone()].iter())
369
365
  .expect_err("expect missing node");
370
366
  check_stats(&store, Some(&mut tx), 0, 0, 0, 0);
371
367
  store
372
368
  .create_nodes(
373
369
  tx.borrow_mut(),
374
- &"default".into(),
370
+ "default",
375
371
  [source_node, destination_node].iter(),
376
372
  )
377
373
  .unwrap();
378
374
  store
379
- .create_edges(tx.borrow_mut(), &"default".into(), [edge.clone()].iter())
375
+ .create_edges(tx.borrow_mut(), "default", [edge.clone()].iter())
380
376
  .unwrap();
381
377
  tx.close().unwrap();
382
378
  check_stats(&store, None, 2, 1, 2, 3);
383
379
 
384
380
  // Modify edge
385
381
 
386
- let modified_edge = graph::Edge {
387
- key: edge.key.clone(),
388
- source: edge.source.clone(),
389
- destination: edge.destination.clone(),
390
- labels: vec!["?".into()],
391
- properties: value::map!("existence" => false),
392
- };
382
+ let modified_edge = graph::Edge::new(
383
+ edge.key().clone(),
384
+ graph::labels!("?"),
385
+ value::value_map!("existence" => false),
386
+ );
393
387
 
394
388
  let mut tx = store.begin_write().unwrap();
395
389
  store
396
- .update_edge(&mut tx, &"default".into(), &modified_edge)
390
+ .update_edge(&mut tx, "default", &modified_edge)
397
391
  .unwrap();
398
392
  tx.close().unwrap();
399
393
 
400
394
  let selected_edges = store
401
395
  .select_edges(
402
396
  store.begin_read().unwrap().borrow_mut(),
403
- &"default".into(),
397
+ "default",
404
398
  store::SelectEdgeQuery::select_all(),
405
399
  graph::EdgeDirectivity::Directed,
406
400
  )
@@ -409,7 +403,7 @@ where
409
403
  check_stats(&store, None, 2, 1, 2, 3);
410
404
 
411
405
  assert_eq!(1, selected_edges.len());
412
- assert_eq!(modified_edge, selected_edges[0].edge);
406
+ assert_eq!(modified_edge, selected_edges[0].path.to_owned().into());
413
407
  assert!(!selected_edges[0].reversed);
414
408
 
415
409
  // Remove edge
@@ -418,7 +412,7 @@ where
418
412
  store
419
413
  .delete_edges(
420
414
  &mut tx,
421
- &"default".into(),
415
+ "default",
422
416
  store::SelectEdgeQuery::select_all(),
423
417
  graph::EdgeDirectivity::Directed,
424
418
  )
@@ -429,7 +423,7 @@ where
429
423
  let selected_edges = store
430
424
  .select_edges(
431
425
  store.begin_read().unwrap().borrow_mut(),
432
- &"default".into(),
426
+ "default",
433
427
  store::SelectEdgeQuery::select_all(),
434
428
  graph::EdgeDirectivity::Directed,
435
429
  )
@@ -440,30 +434,20 @@ where
440
434
  // Add edge back, and remove one of the node
441
435
  let mut tx = store.begin_write().unwrap();
442
436
  store
443
- .create_edges(tx.borrow_mut(), &"default".into(), [edge.clone()].iter())
437
+ .create_edges(tx.borrow_mut(), "default", [edge.clone()].iter())
444
438
  .unwrap();
445
439
  tx.close().unwrap();
446
440
  check_stats(&store, None, 2, 1, 2, 3);
447
441
 
448
442
  let mut tx = store.begin_write().unwrap();
449
443
  store
450
- .delete_nodes(
451
- &mut tx,
452
- &"default".into(),
453
- SelectNodeQuery::select_all(),
454
- false,
455
- )
444
+ .delete_nodes(&mut tx, "default", SelectNodeQuery::select_all(), false)
456
445
  .expect_err("should fails, nodes are still connected.");
457
446
  tx.close().unwrap();
458
447
 
459
448
  let mut tx = store.begin_write().unwrap();
460
449
  store
461
- .delete_nodes(
462
- &mut tx,
463
- &"default".into(),
464
- SelectNodeQuery::select_all(),
465
- true,
466
- )
450
+ .delete_nodes(&mut tx, "default", SelectNodeQuery::select_all(), true)
467
451
  .unwrap();
468
452
  tx.close().unwrap();
469
453
  check_stats(&store, None, 0, 0, 0, 0);
@@ -37,7 +37,7 @@ pub(crate) fn create_named_node() -> Statements
37
37
  vec![
38
38
  Create {
39
39
  patterns: vec![Pattern::Node(NodePattern {
40
- variable: Some(var_ids.from_name("n")),
40
+ variable: Some(var_ids.create_variable_from_name("n")),
41
41
  labels: LabelExpression::None,
42
42
  properties: Some(
43
43
  Map {
@@ -57,10 +57,10 @@ pub(crate) fn create_named_node() -> Statements
57
57
  Return {
58
58
  all: false,
59
59
  expressions: vec![NamedExpression {
60
- identifier: var_ids.from_name("p"),
60
+ identifier: var_ids.create_variable_from_name("p"),
61
61
  expression: MemberAccess {
62
62
  left: Variable {
63
- identifier: var_ids.from_name("n"),
63
+ identifier: var_ids.create_variable_from_name("n"),
64
64
  }
65
65
  .into(),
66
66
  path: vec!["name".into()],
@@ -85,7 +85,7 @@ pub(crate) fn create_named_node_double_return() -> Statements
85
85
  vec![
86
86
  Create {
87
87
  patterns: vec![Pattern::Node(NodePattern {
88
- variable: Some(var_ids.from_name("n")),
88
+ variable: Some(var_ids.create_variable_from_name("n")),
89
89
  labels: LabelExpression::None,
90
90
  properties: Some(
91
91
  Map {
@@ -109,10 +109,10 @@ pub(crate) fn create_named_node_double_return() -> Statements
109
109
  all: false,
110
110
  expressions: vec![
111
111
  NamedExpression {
112
- identifier: var_ids.from_name("id"),
112
+ identifier: var_ids.create_variable_from_name("id"),
113
113
  expression: MemberAccess {
114
114
  left: Variable {
115
- identifier: var_ids.from_name("n"),
115
+ identifier: var_ids.create_variable_from_name("n"),
116
116
  }
117
117
  .into(),
118
118
  path: vec!["id".into()],
@@ -120,10 +120,10 @@ pub(crate) fn create_named_node_double_return() -> Statements
120
120
  .into(),
121
121
  },
122
122
  NamedExpression {
123
- identifier: var_ids.from_name("p"),
123
+ identifier: var_ids.create_variable_from_name("p"),
124
124
  expression: MemberAccess {
125
125
  left: Variable {
126
- identifier: var_ids.from_name("n"),
126
+ identifier: var_ids.create_variable_from_name("n"),
127
127
  }
128
128
  .into(),
129
129
  path: vec!["name".into()],
@@ -151,11 +151,11 @@ pub(crate) fn double_with_return() -> Statements
151
151
  all: false,
152
152
  expressions: vec![
153
153
  NamedExpression {
154
- identifier: var_ids.from_name("n"),
154
+ identifier: var_ids.create_variable_from_name("n"),
155
155
  expression: Value { value: 1.into() }.into(),
156
156
  },
157
157
  NamedExpression {
158
- identifier: var_ids.from_name("m"),
158
+ identifier: var_ids.create_variable_from_name("m"),
159
159
  expression: Value { value: 2.into() }.into(),
160
160
  },
161
161
  ],
@@ -171,16 +171,16 @@ pub(crate) fn double_with_return() -> Statements
171
171
  all: false,
172
172
  expressions: vec![
173
173
  NamedExpression {
174
- identifier: var_ids.from_name("a"),
174
+ identifier: var_ids.create_variable_from_name("a"),
175
175
  expression: Variable {
176
- identifier: var_ids.from_name("n"),
176
+ identifier: var_ids.create_variable_from_name("n"),
177
177
  }
178
178
  .into(),
179
179
  },
180
180
  NamedExpression {
181
- identifier: var_ids.from_name("b"),
181
+ identifier: var_ids.create_variable_from_name("b"),
182
182
  expression: Variable {
183
- identifier: var_ids.from_name("m"),
183
+ identifier: var_ids.create_variable_from_name("m"),
184
184
  }
185
185
  .into(),
186
186
  },
@@ -193,7 +193,7 @@ pub(crate) fn double_with_return() -> Statements
193
193
  where_expression: None,
194
194
  }
195
195
  .into(),
196
- return_statement(var_ids.from_name("a")),
196
+ return_statement(var_ids.create_variable_from_name("a")),
197
197
  ]
198
198
  }
199
199
 
@@ -203,14 +203,14 @@ pub(crate) fn unwind() -> Statements
203
203
  let var_ids = VariableIdentifiers::default();
204
204
  vec![
205
205
  Unwind {
206
- identifier: var_ids.from_name("i"),
206
+ identifier: var_ids.create_variable_from_name("i"),
207
207
  expression: Array {
208
208
  array: vec![Value { value: 0.into() }.into()],
209
209
  }
210
210
  .into(),
211
211
  }
212
212
  .into(),
213
- return_statement(var_ids.from_name("i")),
213
+ return_statement(var_ids.create_variable_from_name("i")),
214
214
  ]
215
215
  }
216
216
 
@@ -223,12 +223,12 @@ pub(crate) fn match_loop() -> Statements
223
223
  patterns: vec![Pattern::Edge(EdgePattern {
224
224
  variable: None,
225
225
  source: NodePattern {
226
- variable: Some(var_ids.from_name("n")),
226
+ variable: Some(var_ids.create_variable_from_name("n")),
227
227
  labels: LabelExpression::None,
228
228
  properties: None,
229
229
  },
230
230
  destination: NodePattern {
231
- variable: Some(var_ids.from_name("n")),
231
+ variable: Some(var_ids.create_variable_from_name("n")),
232
232
  labels: LabelExpression::None,
233
233
  properties: None,
234
234
  },
@@ -240,7 +240,7 @@ pub(crate) fn match_loop() -> Statements
240
240
  optional: false,
241
241
  }
242
242
  .into(),
243
- return_statement(var_ids.from_name("n")),
243
+ return_statement(var_ids.create_variable_from_name("n")),
244
244
  ]
245
245
  }
246
246
 
@@ -251,7 +251,7 @@ pub(crate) fn optional_match() -> Statements
251
251
  vec![
252
252
  Match {
253
253
  patterns: vec![Pattern::Node(NodePattern {
254
- variable: Some(var_ids.from_name("a")),
254
+ variable: Some(var_ids.create_variable_from_name("a")),
255
255
  labels: LabelExpression::None,
256
256
  properties: None,
257
257
  })],
@@ -259,7 +259,7 @@ pub(crate) fn optional_match() -> Statements
259
259
  optional: true,
260
260
  }
261
261
  .into(),
262
- return_statement(var_ids.from_name("a")),
262
+ return_statement(var_ids.create_variable_from_name("a")),
263
263
  ]
264
264
  }
265
265
 
@@ -270,7 +270,7 @@ pub(crate) fn match_count() -> Statements
270
270
  vec![
271
271
  Match {
272
272
  patterns: vec![Pattern::Node(NodePattern {
273
- variable: Some(var_ids.from_name("a")),
273
+ variable: Some(var_ids.create_variable_from_name("a")),
274
274
  labels: LabelExpression::None,
275
275
  properties: None,
276
276
  })],
@@ -281,7 +281,7 @@ pub(crate) fn match_count() -> Statements
281
281
  Return {
282
282
  all: false,
283
283
  expressions: vec![NamedExpression {
284
- identifier: var_ids.from_name("count(*)"),
284
+ identifier: var_ids.create_variable_from_name("count(*)"),
285
285
  expression: FunctionCall {
286
286
  name: "count".into(),
287
287
  arguments: vec![Value { value: 0.into() }.into()],
@@ -306,7 +306,7 @@ pub(crate) fn aggregation() -> Statements
306
306
  vec![
307
307
  Match {
308
308
  patterns: vec![Pattern::Node(NodePattern {
309
- variable: Some(var_ids.from_name("n")),
309
+ variable: Some(var_ids.create_variable_from_name("n")),
310
310
  labels: LabelExpression::None,
311
311
  properties: None,
312
312
  })],
@@ -318,10 +318,10 @@ pub(crate) fn aggregation() -> Statements
318
318
  all: false,
319
319
  expressions: vec![
320
320
  NamedExpression {
321
- identifier: var_ids.from_name("n.name"),
321
+ identifier: var_ids.create_variable_from_name("n.name"),
322
322
  expression: MemberAccess {
323
323
  left: Variable {
324
- identifier: var_ids.from_name("n"),
324
+ identifier: var_ids.create_variable_from_name("n"),
325
325
  }
326
326
  .into(),
327
327
  path: vec!["name".into()],
@@ -329,12 +329,12 @@ pub(crate) fn aggregation() -> Statements
329
329
  .into(),
330
330
  },
331
331
  NamedExpression {
332
- identifier: var_ids.from_name("count(n.num)"),
332
+ identifier: var_ids.create_variable_from_name("count(n.num)"),
333
333
  expression: FunctionCall {
334
334
  name: "count".into(),
335
335
  arguments: vec![MemberAccess {
336
336
  left: Variable {
337
- identifier: var_ids.from_name("n"),
337
+ identifier: var_ids.create_variable_from_name("n"),
338
338
  }
339
339
  .into(),
340
340
  path: vec!["num".into()],
@@ -243,7 +243,7 @@ pub(crate) fn unwind() -> Program
243
243
  pub(crate) fn match_loop() -> Program
244
244
  {
245
245
  vec![
246
- Block::BlockMatch {
246
+ Block::Match {
247
247
  blocks: vec![BlockMatch::MatchEdge {
248
248
  instructions: vec![
249
249
  Instruction::Push {
@@ -297,7 +297,7 @@ pub(crate) fn match_loop() -> Program
297
297
  pub(crate) fn optional_match() -> Program
298
298
  {
299
299
  vec![
300
- Block::BlockMatch {
300
+ Block::Match {
301
301
  blocks: vec![BlockMatch::MatchNode {
302
302
  instructions: vec![
303
303
  Instruction::Push {
@@ -336,7 +336,7 @@ pub(crate) fn optional_match() -> Program
336
336
  pub(crate) fn match_count(function_manager: &functions::Manager) -> Program
337
337
  {
338
338
  vec![
339
- Block::BlockMatch {
339
+ Block::Match {
340
340
  blocks: vec![BlockMatch::MatchNode {
341
341
  instructions: vec![
342
342
  Instruction::Push {
@@ -387,7 +387,7 @@ pub(crate) fn match_count(function_manager: &functions::Manager) -> Program
387
387
  pub(crate) fn aggregation(function_manager: &functions::Manager) -> Program
388
388
  {
389
389
  vec![
390
- Block::BlockMatch {
390
+ Block::Match {
391
391
  blocks: vec![BlockMatch::MatchNode {
392
392
  instructions: vec![
393
393
  Instruction::Push {