@@ -6,8 +6,7 @@ use std::time::Duration;
66use timely:: dataflow:: channels:: pact:: Pipeline ;
77use timely:: dataflow:: operators:: Operator ;
88
9- use declarative_dataflow:: binding:: Binding ;
10- use declarative_dataflow:: plan:: { Implementable , Pull , PullLevel } ;
9+ use declarative_dataflow:: plan:: { Implementable , PullLevel } ;
1110use declarative_dataflow:: server:: Server ;
1211use declarative_dataflow:: timestamp:: Time ;
1312use declarative_dataflow:: { AttributeConfig , IndexDirection , QuerySupport } ;
@@ -161,171 +160,12 @@ fn pull_level() {
161160 } ] ) ;
162161}
163162
164- #[ test]
165- fn pull_children ( ) {
166- let ( parent, child) = ( 1 , 2 ) ;
167-
168- run_cases ( vec ! [ Case {
169- description: "[:find (pull ?child [:name :age]) :where [_ :parent/child ?child]]" ,
170- plan: Plan :: PullLevel ( PullLevel {
171- variables: vec![ ] ,
172- pull_variable: child,
173- plan: Box :: new( Plan :: MatchA ( parent, "parent/child" . to_string( ) , child) ) ,
174- pull_attributes: vec![ "name" . to_string( ) , "age" . to_string( ) ] ,
175- path_attributes: vec![ "parent/child" . to_string( ) ] ,
176- cardinality_many: false ,
177- } ) ,
178- transactions: vec![ vec![
179- TxData :: add( 100 , "name" , String ( "Alice" . to_string( ) ) ) ,
180- TxData :: add( 100 , "parent/child" , Eid ( 300 ) ) ,
181- TxData :: add( 200 , "name" , String ( "Bob" . to_string( ) ) ) ,
182- TxData :: add( 200 , "parent/child" , Eid ( 400 ) ) ,
183- TxData :: add( 300 , "name" , String ( "Mabel" . to_string( ) ) ) ,
184- TxData :: add( 300 , "age" , Number ( 13 ) ) ,
185- TxData :: add( 400 , "name" , String ( "Dipper" . to_string( ) ) ) ,
186- TxData :: add( 400 , "age" , Number ( 12 ) ) ,
187- ] ] ,
188- expectations: vec![ vec![
189- (
190- vec![
191- Eid ( 100 ) ,
192- Aid ( "parent/child" . to_string( ) ) ,
193- Eid ( 300 ) ,
194- Aid ( "age" . to_string( ) ) ,
195- Number ( 13 ) ,
196- ] ,
197- 0 ,
198- 1 ,
199- ) ,
200- (
201- vec![
202- Eid ( 100 ) ,
203- Aid ( "parent/child" . to_string( ) ) ,
204- Eid ( 300 ) ,
205- Aid ( "name" . to_string( ) ) ,
206- String ( "Mabel" . to_string( ) ) ,
207- ] ,
208- 0 ,
209- 1 ,
210- ) ,
211- (
212- vec![
213- Eid ( 200 ) ,
214- Aid ( "parent/child" . to_string( ) ) ,
215- Eid ( 400 ) ,
216- Aid ( "age" . to_string( ) ) ,
217- Number ( 12 ) ,
218- ] ,
219- 0 ,
220- 1 ,
221- ) ,
222- (
223- vec![
224- Eid ( 200 ) ,
225- Aid ( "parent/child" . to_string( ) ) ,
226- Eid ( 400 ) ,
227- Aid ( "name" . to_string( ) ) ,
228- String ( "Dipper" . to_string( ) ) ,
229- ] ,
230- 0 ,
231- 1 ,
232- ) ,
233- ] ] ,
234- } ] ) ;
235- }
236-
237- #[ test]
238- fn pull ( ) {
239- let ( a, b, c) = ( 1 , 2 , 3 ) ;
240-
241- run_cases ( vec ! [ Case {
242- description:
243- "[:find (pull ?a [:name {:join/binding #:pattern[e a v]}]) :where [?a :join/binding]]" ,
244- plan: Plan :: Pull ( Pull {
245- variables: vec![ ] ,
246- paths: vec![
247- Plan :: PullLevel ( PullLevel {
248- variables: vec![ ] ,
249- pull_variable: b,
250- plan: Box :: new( Plan :: MatchA ( a, "join/binding" . to_string( ) , b) ) ,
251- pull_attributes: vec![
252- "pattern/e" . to_string( ) ,
253- "pattern/a" . to_string( ) ,
254- "pattern/v" . to_string( ) ,
255- ] ,
256- path_attributes: vec![ "join/binding" . to_string( ) ] ,
257- cardinality_many: false ,
258- } ) ,
259- Plan :: PullLevel ( PullLevel {
260- variables: vec![ ] ,
261- pull_variable: c,
262- plan: Box :: new( Plan :: MatchA ( a, "name" . to_string( ) , c) ) ,
263- pull_attributes: vec![ ] ,
264- path_attributes: vec![ "name" . to_string( ) ] ,
265- cardinality_many: false ,
266- } ) ,
267- ] ,
268- } ) ,
269- transactions: vec![ vec![
270- TxData :: add( 100 , "name" , String ( "rule" . to_string( ) ) ) ,
271- TxData :: add( 100 , "join/binding" , Eid ( 200 ) ) ,
272- TxData :: add( 100 , "join/binding" , Eid ( 300 ) ) ,
273- TxData :: add( 200 , "pattern/a" , Aid ( "xyz" . to_string( ) ) ) ,
274- TxData :: add( 300 , "pattern/e" , Eid ( 12345 ) ) ,
275- TxData :: add( 300 , "pattern/a" , Aid ( "asd" . to_string( ) ) ) ,
276- ] ] ,
277- expectations: vec![ vec![
278- (
279- vec![
280- Eid ( 100 ) ,
281- Aid ( "name" . to_string( ) ) ,
282- String ( "rule" . to_string( ) ) ,
283- ] ,
284- 0 ,
285- 1 ,
286- ) ,
287- (
288- vec![
289- Eid ( 100 ) ,
290- Aid ( "join/binding" . to_string( ) ) ,
291- Eid ( 200 ) ,
292- Aid ( "pattern/a" . to_string( ) ) ,
293- Aid ( "xyz" . to_string( ) ) ,
294- ] ,
295- 0 ,
296- 1 ,
297- ) ,
298- (
299- vec![
300- Eid ( 100 ) ,
301- Aid ( "join/binding" . to_string( ) ) ,
302- Eid ( 300 ) ,
303- Aid ( "pattern/e" . to_string( ) ) ,
304- Eid ( 12345 ) ,
305- ] ,
306- 0 ,
307- 1 ,
308- ) ,
309- (
310- vec![
311- Eid ( 100 ) ,
312- Aid ( "join/binding" . to_string( ) ) ,
313- Eid ( 300 ) ,
314- Aid ( "pattern/a" . to_string( ) ) ,
315- Aid ( "asd" . to_string( ) ) ,
316- ] ,
317- 0 ,
318- 1 ,
319- ) ,
320- ] ] ,
321- } ] ) ;
322- }
323-
324163#[ cfg( feature = "graphql" ) ]
325164#[ test]
326165#[ rustfmt:: skip]
327166fn graph_ql ( ) {
328167 use declarative_dataflow:: plan:: GraphQl ;
168+ use declarative_dataflow:: binding:: Binding ;
329169
330170 let transactions = vec ! [ vec![
331171 TxData :: add( 100 , "name" , Value :: from( "Alice" ) ) ,
@@ -394,6 +234,8 @@ fn graph_ql() {
394234
395235 let expectations = vec![ vec![
396236 ( vec![ Eid ( 300 ) , Value :: aid( "bested" ) , Eid ( 400 ) , Value :: aid( "age" ) , Number ( 12 ) ] , 0 , 1 ) ,
237+ ( vec![ Eid ( 200 ) , Value :: aid( "bested" ) , Eid ( 100 ) , Value :: aid( "db__id" ) , Eid ( 100 ) ] , 0 , 1 ) ,
238+ ( vec![ Eid ( 300 ) , Value :: aid( "bested" ) , Eid ( 400 ) , Value :: aid( "db__id" ) , Eid ( 400 ) ] , 0 , 1 ) ,
397239 ] ] ;
398240
399241 Case {
0 commit comments