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
@@ -112,35 +112,35 @@ pub(crate) trait Store
112
112
  fn create_graph(
113
113
  &self,
114
114
  transaction: &mut Self::TransactionBox,
115
- name: &String,
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: &String,
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: Iterator<Item = &'a crate::graph::Node>>(
126
+ fn create_nodes<'a, T: IntoIterator<Item = &'a crate::graph::Node>>(
127
127
  &self,
128
128
  transaction: &mut Self::TransactionBox,
129
- graph_name: &String,
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: &String,
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: &String,
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: &String,
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: Iterator<Item = &'a crate::graph::Edge>>(
155
+ fn create_edges<'a, T: IntoIterator<Item = &'a crate::graph::SinglePath>>(
156
156
  &self,
157
157
  transaction: &mut Self::TransactionBox,
158
- graph_name: &String,
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: &String,
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: &String,
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: &String,
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) edge: graph::Edge,
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
- return true;
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::Edge) -> bool
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
- return self.source.is_match(&edge.source) && self.destination.is_match(&edge.destination);
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, value::array![value::array!["a"], value::array![1]]);
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, value::array![value::array!["i"], value::array![0]]);
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::Edge {
97
- key: graph::Key { uuid: 2 },
98
- source: node.clone(),
99
- destination: node.clone(),
100
- labels: vec![],
101
- properties: Default::default(),
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
- key: graph::Key { uuid: 1 },
182
- labels: vec![],
183
- properties: value::map!("name" => "a", "num" => 33),
184
- },
185
- graph::Node {
186
- key: graph::Key { uuid: 2 },
187
- labels: vec![],
188
- properties: value::map!("name" => "a"),
189
- },
190
- graph::Node {
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
- == value::array![
209
- value::array!["n.name", "count(n.num)"],
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
- value::array![
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
  }