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.
- checksums.yaml +4 -4
- data/ext/Cargo.toml +20 -0
- data/ext/gqlitedb/Cargo.toml +77 -0
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/benches/common/pokec.rs +30 -20
- data/ext/gqlitedb/gqlite_bench_data/README.MD +6 -0
- data/ext/gqlitedb/gqlite_bench_data/scripts/generate_smaller_pokec.rb +85 -0
- data/ext/gqlitedb/gqlite_bench_data/scripts/to_efficient_pokec.rb +34 -0
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/aggregators/arithmetic.rs +1 -0
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/aggregators/stats.rs +27 -49
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/aggregators.rs +7 -7
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/capi.rs +10 -9
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/compiler/expression_analyser.rs +6 -4
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/compiler/variables_manager.rs +27 -31
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/compiler.rs +37 -41
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/connection.rs +42 -84
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/error.rs +105 -34
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/containers.rs +21 -26
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/edge.rs +2 -2
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/math.rs +2 -2
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/node.rs +1 -1
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/path.rs +15 -20
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/scalar.rs +2 -2
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/value.rs +6 -6
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions.rs +20 -20
- data/ext/gqlitedb/src/graph.rs +11 -0
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/interpreter/evaluators.rs +160 -194
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/interpreter/instructions.rs +2 -1
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/lib.rs +9 -4
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/parser/ast.rs +44 -52
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/parser/gql.pest +1 -1
- data/ext/{gqliterb/vendor/gqlitedb/src/parser/parser.rs → gqlitedb/src/parser/parser_impl.rs} +50 -28
- data/ext/gqlitedb/src/parser.rs +4 -0
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/prelude.rs +3 -2
- data/ext/gqlitedb/src/query_result.rs +88 -0
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/store/redb.rs +226 -148
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/store/sqlite.rs +111 -128
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/store.rs +22 -22
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/evaluators.rs +32 -76
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/store.rs +95 -111
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/templates/ast.rs +29 -29
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/templates/programs.rs +4 -4
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/value/compare.rs +13 -20
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/value/contains.rs +2 -2
- data/ext/gqlitedb/src/value.rs +225 -0
- data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/value_table.rs +15 -5
- data/ext/gqliterb/Cargo.toml +12 -35
- data/ext/gqliterb/src/lib.rs +60 -38
- data/ext/graphcore/Cargo.toml +19 -0
- data/ext/graphcore/README.MD +4 -0
- data/ext/graphcore/release.toml +1 -0
- data/ext/graphcore/src/error.rs +28 -0
- data/ext/{gqliterb/vendor/gqlitedb → graphcore}/src/graph.rs +134 -38
- data/ext/graphcore/src/lib.rs +16 -0
- data/ext/graphcore/src/prelude.rs +4 -0
- data/ext/{gqliterb/vendor/gqlitedb → graphcore}/src/serialize_with.rs +2 -2
- data/ext/graphcore/src/table.rs +272 -0
- data/ext/{gqliterb/vendor/gqlitedb → graphcore}/src/value/value_map.rs +44 -49
- data/ext/graphcore/src/value.rs +413 -0
- metadata +94 -83
- data/ext/gqliterb/.cargo/config.toml +0 -2
- data/ext/gqliterb/Cargo.lock +0 -1116
- data/ext/gqliterb/vendor/gqlitedb/Cargo.lock +0 -2115
- data/ext/gqliterb/vendor/gqlitedb/Cargo.toml +0 -138
- data/ext/gqliterb/vendor/gqlitedb/src/parser.rs +0 -4
- data/ext/gqliterb/vendor/gqlitedb/src/value.rs +0 -609
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/askama.toml +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/benches/common/mod.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/benches/pokec_divan.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/benches/pokec_iai.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/release.toml +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/aggregators/containers.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/aggregators/count.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/consts.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/functions/string.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/interpreter/mod.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/store/pgql.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/compiler.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/parser.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/store/redb.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/store/sqlite.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests/templates.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/tests.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/src/utils.rs +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/call_stats.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/edge_count_for_node.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/edge_create.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/edge_delete.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/edge_delete_by_nodes.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/edge_select.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/edge_update.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/graph_create.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/graph_delete.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/metadata_create_table.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/metadata_get.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/metadata_set.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/node_create.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/node_delete.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/node_select.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/node_update.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/table_exists.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/upgrade_from_1_01.sql +0 -0
- /data/ext/{gqliterb/vendor/gqlitedb → gqlitedb}/templates/sql/sqlite/upgrade_graph_from_1_01.sql +0 -0
@@ -112,35 +112,35 @@ pub(crate) trait Store
|
|
112
112
|
fn create_graph(
|
113
113
|
&self,
|
114
114
|
transaction: &mut Self::TransactionBox,
|
115
|
-
name:
|
115
|
+
name: impl AsRef<str>,
|
116
116
|
ignore_if_exists: bool,
|
117
117
|
) -> Result<()>;
|
118
118
|
/// Delete a graph
|
119
119
|
fn drop_graph(
|
120
120
|
&self,
|
121
121
|
transaction: &mut Self::TransactionBox,
|
122
|
-
name:
|
122
|
+
name: impl AsRef<str>,
|
123
123
|
if_exists: bool,
|
124
124
|
) -> Result<()>;
|
125
125
|
/// Create nodes and add them to a graph
|
126
|
-
fn create_nodes<'a, T:
|
126
|
+
fn create_nodes<'a, T: IntoIterator<Item = &'a crate::graph::Node>>(
|
127
127
|
&self,
|
128
128
|
transaction: &mut Self::TransactionBox,
|
129
|
-
graph_name:
|
129
|
+
graph_name: impl AsRef<str>,
|
130
130
|
nodes_iter: T,
|
131
131
|
) -> Result<()>;
|
132
132
|
/// Create nodes and add them to a graph
|
133
133
|
fn update_node(
|
134
134
|
&self,
|
135
135
|
transaction: &mut Self::TransactionBox,
|
136
|
-
graph_name:
|
136
|
+
graph_name: impl AsRef<str>,
|
137
137
|
node: &graph::Node,
|
138
138
|
) -> Result<()>;
|
139
139
|
/// Delete nodes according to a given query
|
140
140
|
fn delete_nodes(
|
141
141
|
&self,
|
142
142
|
transaction: &mut Self::TransactionBox,
|
143
|
-
graph_name:
|
143
|
+
graph_name: impl AsRef<str>,
|
144
144
|
query: SelectNodeQuery,
|
145
145
|
detach: bool,
|
146
146
|
) -> Result<()>;
|
@@ -148,27 +148,27 @@ pub(crate) trait Store
|
|
148
148
|
fn select_nodes(
|
149
149
|
&self,
|
150
150
|
transaction: &mut Self::TransactionBox,
|
151
|
-
graph_name:
|
151
|
+
graph_name: impl AsRef<str>,
|
152
152
|
query: SelectNodeQuery,
|
153
153
|
) -> Result<Vec<crate::graph::Node>>;
|
154
154
|
/// Add edge
|
155
|
-
fn create_edges<'a, T:
|
155
|
+
fn create_edges<'a, T: IntoIterator<Item = &'a crate::graph::SinglePath>>(
|
156
156
|
&self,
|
157
157
|
transaction: &mut Self::TransactionBox,
|
158
|
-
graph_name:
|
158
|
+
graph_name: impl AsRef<str>,
|
159
159
|
edges_iter: T,
|
160
160
|
) -> Result<()>;
|
161
161
|
fn update_edge(
|
162
162
|
&self,
|
163
163
|
transaction: &mut Self::TransactionBox,
|
164
|
-
graph_name:
|
164
|
+
graph_name: impl AsRef<str>,
|
165
165
|
edge: &graph::Edge,
|
166
166
|
) -> Result<()>;
|
167
167
|
/// Delete nodes according to a given query
|
168
168
|
fn delete_edges(
|
169
169
|
&self,
|
170
170
|
transaction: &mut Self::TransactionBox,
|
171
|
-
graph_name:
|
171
|
+
graph_name: impl AsRef<str>,
|
172
172
|
query: SelectEdgeQuery,
|
173
173
|
directivity: graph::EdgeDirectivity,
|
174
174
|
) -> Result<()>;
|
@@ -176,7 +176,7 @@ pub(crate) trait Store
|
|
176
176
|
fn select_edges(
|
177
177
|
&self,
|
178
178
|
transaction: &mut Self::TransactionBox,
|
179
|
-
graph_name:
|
179
|
+
graph_name: impl AsRef<str>,
|
180
180
|
query: SelectEdgeQuery,
|
181
181
|
directivity: graph::EdgeDirectivity,
|
182
182
|
) -> Result<Vec<EdgeResult>>;
|
@@ -193,7 +193,7 @@ pub(crate) trait Store
|
|
193
193
|
|
194
194
|
pub(crate) struct EdgeResult
|
195
195
|
{
|
196
|
-
pub(crate)
|
196
|
+
pub(crate) path: graph::SinglePath,
|
197
197
|
pub(crate) reversed: bool,
|
198
198
|
}
|
199
199
|
|
@@ -285,14 +285,14 @@ impl SelectNodeQuery
|
|
285
285
|
}
|
286
286
|
if let Some(keys) = &self.keys
|
287
287
|
{
|
288
|
-
if !keys.iter().any(|x| node.key == *x)
|
288
|
+
if !keys.iter().any(|x| node.key() == *x)
|
289
289
|
{
|
290
290
|
return false;
|
291
291
|
}
|
292
292
|
}
|
293
293
|
if let Some(labels) = &self.labels
|
294
294
|
{
|
295
|
-
if !labels.iter().all(|x| node.labels.contains(x))
|
295
|
+
if !labels.iter().all(|x| node.labels().contains(x))
|
296
296
|
{
|
297
297
|
return false;
|
298
298
|
}
|
@@ -301,12 +301,12 @@ impl SelectNodeQuery
|
|
301
301
|
{
|
302
302
|
if !properties
|
303
303
|
.iter()
|
304
|
-
.all(|(k, v)| node.properties.get(k) == Some(v))
|
304
|
+
.all(|(k, v)| node.properties().get(k) == Some(v))
|
305
305
|
{
|
306
306
|
return false;
|
307
307
|
}
|
308
308
|
}
|
309
|
-
|
309
|
+
true
|
310
310
|
}
|
311
311
|
}
|
312
312
|
|
@@ -409,18 +409,18 @@ impl SelectEdgeQuery
|
|
409
409
|
destination: destination_query,
|
410
410
|
}
|
411
411
|
}
|
412
|
-
pub(crate) fn is_match(&self, edge: &graph::
|
412
|
+
pub(crate) fn is_match(&self, edge: &graph::Path) -> bool
|
413
413
|
{
|
414
414
|
if let Some(keys) = &self.keys
|
415
415
|
{
|
416
|
-
if !keys.iter().any(|x| edge.key == *x)
|
416
|
+
if !keys.iter().any(|x| edge.key() == *x)
|
417
417
|
{
|
418
418
|
return false;
|
419
419
|
}
|
420
420
|
}
|
421
421
|
if let Some(labels) = &self.labels
|
422
422
|
{
|
423
|
-
if !labels.iter().all(|x| edge.labels.contains(x))
|
423
|
+
if !labels.iter().all(|x| edge.labels().contains(x))
|
424
424
|
{
|
425
425
|
return false;
|
426
426
|
}
|
@@ -429,11 +429,11 @@ impl SelectEdgeQuery
|
|
429
429
|
{
|
430
430
|
if !properties
|
431
431
|
.iter()
|
432
|
-
.all(|(k, v)| edge.properties.get(k) == Some(v))
|
432
|
+
.all(|(k, v)| edge.properties().get(k) == Some(v))
|
433
433
|
{
|
434
434
|
return false;
|
435
435
|
}
|
436
436
|
}
|
437
|
-
|
437
|
+
self.source.is_match(edge.source()) && self.destination.is_match(edge.destination())
|
438
438
|
}
|
439
439
|
}
|
@@ -24,10 +24,7 @@ fn test_evaluate_create_named_node()
|
|
24
24
|
let value = eval_program(&store, &programs::create_named_node(), &Default::default()).unwrap();
|
25
25
|
check_stats(&store, None, 1, 0, 0, 1);
|
26
26
|
|
27
|
-
assert_eq!(
|
28
|
-
value,
|
29
|
-
value::array![value::array!["p"], value::array!["foo"]]
|
30
|
-
);
|
27
|
+
assert_eq!(value, graphcore::table![("p"), [["foo"]]].into());
|
31
28
|
}
|
32
29
|
|
33
30
|
#[test]
|
@@ -44,10 +41,7 @@ fn test_evaluate_create_named_node_double_return()
|
|
44
41
|
.unwrap();
|
45
42
|
check_stats(&store, None, 1, 0, 0, 2);
|
46
43
|
|
47
|
-
assert_eq!(
|
48
|
-
value,
|
49
|
-
value::array![value::array!["id", "p"], value::array![12, "foo"]]
|
50
|
-
);
|
44
|
+
assert_eq!(value, graphcore::table![("id", "p"), [[12, "foo"]]].into());
|
51
45
|
}
|
52
46
|
|
53
47
|
#[test]
|
@@ -59,7 +53,7 @@ fn test_evaluate_double_with_return()
|
|
59
53
|
let value = eval_program(&store, &programs::double_with_return(), &Default::default()).unwrap();
|
60
54
|
check_stats(&store, None, 0, 0, 0, 0);
|
61
55
|
|
62
|
-
assert_eq!(value,
|
56
|
+
assert_eq!(value, crate::table![("a"), [[1,]]].into());
|
63
57
|
}
|
64
58
|
|
65
59
|
#[test]
|
@@ -71,7 +65,7 @@ fn test_evaluate_unwind()
|
|
71
65
|
let value = eval_program(&store, &programs::unwind(), &Default::default()).unwrap();
|
72
66
|
check_stats(&store, None, 0, 0, 0, 0);
|
73
67
|
|
74
|
-
assert_eq!(value,
|
68
|
+
assert_eq!(value, crate::table![("i"), [[0,]]].into());
|
75
69
|
}
|
76
70
|
|
77
71
|
#[test]
|
@@ -80,11 +74,7 @@ fn test_evaluate_match_loop()
|
|
80
74
|
let temp_file = crate::tests::create_tmp_file();
|
81
75
|
let store = crate::store::redb::Store::open(temp_file.path()).unwrap();
|
82
76
|
|
83
|
-
let node = graph::Node
|
84
|
-
key: graph::Key { uuid: 1 },
|
85
|
-
labels: vec![],
|
86
|
-
properties: Default::default(),
|
87
|
-
};
|
77
|
+
let node = graph::Node::new(graph::Key::new(1), vec![], Default::default());
|
88
78
|
let mut tx = store.begin_write().unwrap();
|
89
79
|
store
|
90
80
|
.create_nodes(&mut tx, &"default".to_string(), vec![&node].into_iter())
|
@@ -93,13 +83,13 @@ fn test_evaluate_match_loop()
|
|
93
83
|
.create_edges(
|
94
84
|
&mut tx,
|
95
85
|
&"default".to_string(),
|
96
|
-
vec![&graph::
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
86
|
+
vec![&graph::Path::new(
|
87
|
+
graph::Key::new(2),
|
88
|
+
node.clone(),
|
89
|
+
vec![],
|
90
|
+
Default::default(),
|
91
|
+
node.clone(),
|
92
|
+
)]
|
103
93
|
.into_iter(),
|
104
94
|
)
|
105
95
|
.unwrap();
|
@@ -108,10 +98,7 @@ fn test_evaluate_match_loop()
|
|
108
98
|
let value = eval_program(&store, &programs::match_loop(), &Default::default()).unwrap();
|
109
99
|
check_stats(&store, None, 1, 1, 0, 0);
|
110
100
|
|
111
|
-
assert_eq!(
|
112
|
-
value,
|
113
|
-
value::array![value::array!["n"], value::array![node]]
|
114
|
-
);
|
101
|
+
assert_eq!(value, crate::table![("n"), [[node]]].into());
|
115
102
|
}
|
116
103
|
|
117
104
|
#[test]
|
@@ -123,10 +110,7 @@ fn test_evaluate_optional_match()
|
|
123
110
|
let value = eval_program(&store, &programs::optional_match(), &Default::default()).unwrap();
|
124
111
|
check_stats(&store, None, 0, 0, 0, 0);
|
125
112
|
|
126
|
-
assert_eq!(
|
127
|
-
value,
|
128
|
-
value::array![value::array!["a"], value::array![value::Value::Null]]
|
129
|
-
);
|
113
|
+
assert_eq!(value, crate::table![("a"), [[value::Value::Null]]].into());
|
130
114
|
}
|
131
115
|
|
132
116
|
#[test]
|
@@ -141,17 +125,10 @@ fn test_evaluate_match_count()
|
|
141
125
|
let value = eval_program(&store, &program, &Default::default()).unwrap();
|
142
126
|
check_stats(&store, None, 0, 0, 0, 0);
|
143
127
|
|
144
|
-
assert_eq!(
|
145
|
-
value,
|
146
|
-
value::array![value::array!["count(*)"], value::array![0]]
|
147
|
-
);
|
128
|
+
assert_eq!(value, crate::table![("count(*)"), [[0]]].into());
|
148
129
|
|
149
130
|
// Count 1
|
150
|
-
let node = graph::Node
|
151
|
-
key: graph::Key { uuid: 1 },
|
152
|
-
labels: vec![],
|
153
|
-
properties: Default::default(),
|
154
|
-
};
|
131
|
+
let node = graph::Node::new(graph::Key::new(1), vec![], Default::default());
|
155
132
|
let mut tx = store.begin_write().unwrap();
|
156
133
|
store
|
157
134
|
.create_nodes(&mut tx, &"default".to_string(), vec![&node].into_iter())
|
@@ -162,10 +139,7 @@ fn test_evaluate_match_count()
|
|
162
139
|
let value = eval_program(&store, &program, &Default::default()).unwrap();
|
163
140
|
check_stats(&store, None, 1, 0, 0, 0);
|
164
141
|
|
165
|
-
assert_eq!(
|
166
|
-
value,
|
167
|
-
value::array![value::array!["count(*)"], value::array![1]]
|
168
|
-
);
|
142
|
+
assert_eq!(value, crate::table![("count(*)"), [[1]]].into());
|
169
143
|
}
|
170
144
|
|
171
145
|
#[test]
|
@@ -177,21 +151,17 @@ fn test_evaluate_aggregation()
|
|
177
151
|
let program = programs::aggregation(&function_manager);
|
178
152
|
|
179
153
|
let nodes = vec![
|
180
|
-
graph::Node
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
graph::Node
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
key: graph::Key { uuid: 3 },
|
192
|
-
labels: vec![],
|
193
|
-
properties: value::map!("name" => "b", "num" => 42),
|
194
|
-
},
|
154
|
+
graph::Node::new(
|
155
|
+
graph::Key::new(1),
|
156
|
+
vec![],
|
157
|
+
value::value_map!("name" => "a", "num" => 33),
|
158
|
+
),
|
159
|
+
graph::Node::new(graph::Key::new(2), vec![], value::value_map!("name" => "a")),
|
160
|
+
graph::Node::new(
|
161
|
+
graph::Key::new(3),
|
162
|
+
vec![],
|
163
|
+
value::value_map!("name" => "b", "num" => 42),
|
164
|
+
),
|
195
165
|
];
|
196
166
|
let mut tx = store.begin_write().unwrap();
|
197
167
|
store
|
@@ -204,24 +174,10 @@ fn test_evaluate_aggregation()
|
|
204
174
|
check_stats(&store, None, 3, 0, 0, 5);
|
205
175
|
|
206
176
|
assert!(
|
207
|
-
value
|
208
|
-
==
|
209
|
-
|
210
|
-
value::array!["a", 1],
|
211
|
-
value::array!["b", 1]
|
212
|
-
]
|
213
|
-
|| value
|
214
|
-
== value::array![
|
215
|
-
value::array!["n.name", "count(n.num)"],
|
216
|
-
value::array!["b", 1],
|
217
|
-
value::array!["a", 1]
|
218
|
-
],
|
219
|
-
"left ({}) == right ({} in any order) failed",
|
177
|
+
value == crate::table![("n.name", "count(n.num)"), [["a", 1], ["b", 1]]].into()
|
178
|
+
|| value == crate::table![("n.name", "count(n.num)"), [["b", 1], ["a", 1]]].into(),
|
179
|
+
"left ({}) == right ({:?} in any order) failed",
|
220
180
|
value,
|
221
|
-
|
222
|
-
value::array!["n.name", "count(n.num)"],
|
223
|
-
value::array!["a", 1],
|
224
|
-
value::array!["b", 1]
|
225
|
-
],
|
181
|
+
crate::table![("n.name", "count(n.num)"), [["a", 1], ["b", 1]]],
|
226
182
|
);
|
227
183
|
}
|