Merge lp:~zorba-coders/zorba/bug-967428 into lp:zorba

Proposed by Markos Zaharioudakis
Status: Merged
Approved by: Markos Zaharioudakis
Approved revision: 10869
Merged at revision: 10876
Proposed branch: lp:~zorba-coders/zorba/bug-967428
Merge into: lp:zorba
Diff against target: 2943 lines (+1239/-1121)
28 files modified
ChangeLog (+3/-0)
src/compiler/expression/expr.h (+2/-0)
src/compiler/rewriter/rules/hoist_rules.cpp (+55/-55)
src/compiler/rewriter/rules/index_join_rule.cpp (+8/-8)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9197.iter (+34/-34)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9198.iter (+34/-34)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9199.iter (+34/-34)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9206.iter (+38/-38)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9207.iter (+34/-34)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9210.iter (+38/-38)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9211.iter (+38/-38)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9212.iter (+38/-38)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9389.iter (+38/-38)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9391.iter (+38/-38)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9392.iter (+52/-52)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9399.iter (+38/-38)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9400.iter (+38/-38)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/idx4.iter (+74/-78)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/idx5.iter (+78/-82)
test/rbkt/ExpCompilerResults/IterPlan/zorba/misc/hoist4.iter (+16/-20)
test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9198.iter (+34/-34)
test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9199.iter (+34/-34)
test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9212.iter (+38/-38)
test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9389.iter (+38/-38)
test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9392.iter (+52/-52)
test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-idx4.iter (+74/-78)
test/rbkt/ExpCompilerResults/IterPlan/zorba/xray/ppm_10.iter (+107/-111)
test/rbkt/Queries/zorba/hashjoins/idx10.xq (+134/-1)
To merge this branch: bzr merge lp:~zorba-coders/zorba/bug-967428
Reviewer Review Type Date Requested Status
Markos Zaharioudakis Approve
Review via email: mp+108704@code.launchpad.net

Commit message

Improved hoist rule: tighter hoisting of expressions (also fixes bug #967428)

Description of the change

Improved hoist rule: tighter hoisting of expressions (also fixes bug #967428)

To post a comment you must log in.
Revision history for this message
Markos Zaharioudakis (markos-za) :
review: Approve
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

There are additional revisions which have not been approved in review. Please seek review and approval of these new revisions.

Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

Validation queue job bug-967428-2012-06-14T14-35-22.814Z is finished. The final status was:

All tests succeeded!

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ChangeLog'
2--- ChangeLog 2012-06-14 13:21:03 +0000
3+++ ChangeLog 2012-06-14 14:31:26 +0000
4@@ -1,5 +1,6 @@
5 Zorba - The XQuery Processor
6
7+
8 version 2.x
9
10 New Features:
11@@ -7,6 +8,8 @@
12
13 Optimizations:
14 * Small optimization of comparison operations.
15+ * Improved hoist rule: tighter hoisting of expressions (also fixes bug #967428,
16+ which is only a performance bug)
17
18 Bug Fixes/Other Changes:
19 * Fixed bug #854506 (ugly type error messages) and partial fix for bug #867008
20
21=== modified file 'src/compiler/expression/expr.h'
22--- src/compiler/expression/expr.h 2012-06-14 13:21:03 +0000
23+++ src/compiler/expression/expr.h 2012-06-14 14:31:26 +0000
24@@ -1007,6 +1007,8 @@
25
26 expr* get_try_expr() const { return theTryExpr.getp(); }
27
28+ void set_try_expr(expr* e) { theTryExpr = e; }
29+
30 expr* get_catch_expr(csize i) const { return theCatchExprs[i].getp(); }
31
32 void add_catch_expr(expr_t e);
33
34=== modified file 'src/compiler/rewriter/rules/hoist_rules.cpp'
35--- src/compiler/rewriter/rules/hoist_rules.cpp 2012-06-14 13:21:03 +0000
36+++ src/compiler/rewriter/rules/hoist_rules.cpp 2012-06-14 14:31:26 +0000
37@@ -137,9 +137,9 @@
38 {
39 flwor_expr* flwor = static_cast<flwor_expr *>(e);
40
41- PathHolder curr_holder;
42- curr_holder.prev = path;
43- curr_holder.expr = e;
44+ PathHolder step;
45+ step.prev = path;
46+ step.expr = e;
47
48 csize numForLetClauses = flwor->num_forlet_clauses();
49 csize i = 0;
50@@ -147,32 +147,26 @@
51 while (i < numForLetClauses)
52 {
53 forletwin_clause* flc = static_cast<forletwin_clause*>(flwor->get_clause(i));
54-
55 expr* domainExpr = flc->get_expr();
56
57- expr_t unhoistExpr = try_hoisting(rCtx,
58- domainExpr,
59- varmap,
60- freevarMap,
61- &curr_holder);
62+ expr_t unhoistExpr =
63+ try_hoisting(rCtx, domainExpr, varmap, freevarMap, &step);
64+
65 if (unhoistExpr != NULL)
66 {
67 flc->set_expr(unhoistExpr.getp());
68 status = true;
69-
70 numForLetClauses = flwor->num_forlet_clauses();
71-
72 // TODO: the expr that was just hoisted here, may contain sub-exprs that
73 // can be hoisted even earlier.
74 }
75 else if (domainExpr->is_sequential())
76 {
77 PathHolder root;
78- bool hoisted = hoist_expressions(rCtx,
79- domainExpr,
80- varmap,
81- freevarMap,
82- &root);
83+
84+ bool hoisted =
85+ hoist_expressions(rCtx, domainExpr, varmap, freevarMap, &root);
86+
87 if (hoisted)
88 {
89 if (root.expr != NULL)
90@@ -180,7 +174,6 @@
91 assert(root.expr->get_expr_kind() == flwor_expr_kind);
92
93 static_cast<flwor_expr*>(root.expr.getp())->set_return_expr(domainExpr);
94-
95 flc->set_expr(root.expr.getp());
96 }
97
98@@ -190,11 +183,9 @@
99 }
100 else
101 {
102- bool hoisted = hoist_expressions(rCtx,
103- domainExpr,
104- varmap,
105- freevarMap,
106- &curr_holder);
107+ bool hoisted =
108+ hoist_expressions(rCtx, domainExpr, varmap, freevarMap, &step);
109+
110 if (hoisted)
111 {
112 status = true;
113@@ -202,7 +193,7 @@
114 }
115 }
116
117- i = ++(curr_holder.clauseCount);
118+ i = ++(step.clauseCount);
119
120 assert(numForLetClauses == flwor->num_forlet_clauses());
121 }
122@@ -212,7 +203,8 @@
123 {
124 ZORBA_ASSERT(!we->is_sequential());
125
126- expr_t unhoistExpr = try_hoisting(rCtx, we, varmap, freevarMap, &curr_holder);
127+ expr_t unhoistExpr = try_hoisting(rCtx, we, varmap, freevarMap, &step);
128+
129 if (unhoistExpr != NULL)
130 {
131 flwor->set_where(unhoistExpr.getp());
132@@ -220,14 +212,14 @@
133 }
134 else
135 {
136- status = hoist_expressions(rCtx, we, varmap, freevarMap, &curr_holder) || status;
137+ status = hoist_expressions(rCtx, we, varmap, freevarMap, &step) || status;
138 }
139 }
140
141 // TODO: hoist orderby exprs
142
143 expr_t re = flwor->get_return_expr();
144- expr_t unhoistExpr = try_hoisting(rCtx, re, varmap, freevarMap, &curr_holder);
145+ expr_t unhoistExpr = try_hoisting(rCtx, re, varmap, freevarMap, &step);
146
147 if (unhoistExpr != NULL)
148 {
149@@ -251,15 +243,15 @@
150 }
151 else
152 {
153- status = hoist_expressions(rCtx, re, varmap, freevarMap, &curr_holder) || status;
154+ status = hoist_expressions(rCtx, re, varmap, freevarMap, &step) || status;
155 }
156 }
157
158 else if (e->get_expr_kind() == trycatch_expr_kind)
159 {
160- PathHolder pathStep;
161- pathStep.prev = path;
162- pathStep.expr = e;
163+ PathHolder step;
164+ step.prev = path;
165+ step.expr = e;
166
167 ExprIterator iter(e);
168
169@@ -268,7 +260,7 @@
170 expr* ce = &*(*iter);
171 if (ce)
172 {
173- expr_t unhoistExpr = try_hoisting(rCtx, ce, varmap, freevarMap, &pathStep);
174+ expr_t unhoistExpr = try_hoisting(rCtx, ce, varmap, freevarMap, &step);
175 if (unhoistExpr != NULL)
176 {
177 *iter = unhoistExpr.getp();
178@@ -276,7 +268,7 @@
179 }
180 else
181 {
182- status = hoist_expressions(rCtx, ce, varmap, freevarMap, &pathStep) || status;
183+ status = hoist_expressions(rCtx, ce, varmap, freevarMap, &step) || status;
184 }
185 }
186
187@@ -358,7 +350,7 @@
188 expr* e,
189 const VarIdMap& varmap,
190 const ExprVarsMap& freevarMap,
191- struct PathHolder* holder)
192+ struct PathHolder* path)
193 {
194 if (non_hoistable(e) || e->contains_node_construction())
195 {
196@@ -371,21 +363,21 @@
197 ZORBA_ASSERT(fvme != freevarMap.end());
198 const DynamicBitset& varset = fvme->second;
199
200- PathHolder* h = holder;
201+ PathHolder* step = path;
202
203 bool inloop = false;
204 bool foundReferencedFLWORVar = false;
205 bool foundSequentialClause = false;
206 int i = 0;
207
208- // h->prev == NULL means that expr e is not inside any flwor expr, and as a
209+ // step->prev == NULL means that expr e is not inside any flwor expr, and as a
210 // result, there is nothing to hoist.
211- while (h->prev != NULL)
212+ while (step->prev != NULL)
213 {
214- if (h->expr->get_expr_kind() == trycatch_expr_kind)
215+ if (step->expr->get_expr_kind() == trycatch_expr_kind)
216 {
217 // Should not hoist an expr out of a try-catch if it contains any try-catch vars
218- trycatch_expr* trycatch = static_cast<trycatch_expr*>(h->expr.getp());
219+ trycatch_expr* trycatch = static_cast<trycatch_expr*>(step->expr.getp());
220 csize numClauses = trycatch->clause_count();
221
222 for (csize i = 0; i < numClauses; ++i)
223@@ -407,10 +399,9 @@
224 }
225 else
226 {
227- assert(h->expr->get_expr_kind() == flwor_expr_kind);
228+ assert(step->expr->get_expr_kind() == flwor_expr_kind);
229
230- flwor_expr* flwor = static_cast<flwor_expr*>(h->expr.getp());
231-
232+ flwor_expr* flwor = static_cast<flwor_expr*>(step->expr.getp());
233 group_clause* gc = flwor->get_group_clause();
234
235 // If any free variable is a group-by variable, give up.
236@@ -441,7 +432,7 @@
237 // If yes, then let V be the inner-most var referenced by e. If there are any
238 // FOR vars after V, e can be hoisted out of any such FOR vars. Otherwise, e
239 // cannot be hoisted.
240- for (i = h->clauseCount - 1; i >= 0; --i)
241+ for (i = step->clauseCount - 1; i >= 0; --i)
242 {
243 const forletwin_clause* flc =
244 static_cast<const forletwin_clause*>(flwor->get_clause(i));
245@@ -469,7 +460,10 @@
246 break;
247 }
248
249- h = h->prev;
250+ if (step->prev->prev == NULL)
251+ break;
252+
253+ step = step->prev;
254 }
255
256 if (!inloop)
257@@ -489,27 +483,33 @@
258 hoisted->setFlags(e->getFlags());
259 letvar->setFlags(e->getFlags());
260
261- let_clause_t flref(new let_clause(e->get_sctx(),
262- e->get_loc(),
263- letvar,
264- hoisted));
265+ let_clause_t flref(new let_clause(e->get_sctx(), e->get_loc(), letvar, hoisted));
266
267 letvar->set_flwor_clause(flref.getp());
268
269- if (h->prev == NULL)
270+ if (step->prev == NULL)
271 {
272- if (h->expr == NULL)
273+ if (step->expr == NULL)
274 {
275- h->expr = new flwor_expr(e->get_sctx(), e->get_loc(), false);
276+ step->expr = new flwor_expr(e->get_sctx(), e->get_loc(), false);
277 }
278- static_cast<flwor_expr*>(h->expr.getp())->add_clause(flref);
279+ static_cast<flwor_expr*>(step->expr.getp())->add_clause(flref);
280+ }
281+ else if (step->expr->get_expr_kind() == flwor_expr_kind)
282+ {
283+ static_cast<flwor_expr*>(step->expr.getp())->add_clause(i + 1, flref);
284+ ++step->clauseCount;
285 }
286 else
287 {
288- assert(h->expr->get_expr_kind() == flwor_expr_kind);
289-
290- static_cast<flwor_expr*>(h->expr.getp())->add_clause(i + 1, flref);
291- ++h->clauseCount;
292+ assert(step->expr->get_expr_kind() == trycatch_expr_kind);
293+ trycatch_expr* trycatchExpr = static_cast<trycatch_expr*>(step->expr.getp());
294+
295+ flwor_expr_t flwor = new flwor_expr(e->get_sctx(), e->get_loc(), false);
296+ flwor->add_clause(flref);
297+ flwor->set_return_expr(trycatchExpr->get_try_expr());
298+
299+ trycatchExpr->set_try_expr(flwor);
300 }
301
302 expr_t unhoisted = new fo_expr(e->get_sctx(),
303
304=== modified file 'src/compiler/rewriter/rules/index_join_rule.cpp'
305--- src/compiler/rewriter/rules/index_join_rule.cpp 2012-05-03 12:31:51 +0000
306+++ src/compiler/rewriter/rules/index_join_rule.cpp 2012-06-14 14:31:26 +0000
307@@ -518,7 +518,7 @@
308 innerPosInStack))
309 return;
310
311- ulong numClauses = innerFlwor->num_clauses();
312+ csize numClauses = innerFlwor->num_clauses();
313
314 if (innerFlwor->defines_variable(predInfo.theOuterVar) >= 0 ||
315 mostInnerVarPos < numClauses-1)
316@@ -529,12 +529,12 @@
317
318 flwor_expr_t nestedFlwor = new flwor_expr(sctx, nestedLoc, false);
319
320- for (ulong i = mostInnerVarPos+1; i < numClauses; ++i)
321+ for (csize i = mostInnerVarPos+1; i < numClauses; ++i)
322 {
323 nestedFlwor->add_clause(innerFlwor->get_clause(i));
324 }
325
326- for (ulong i = numClauses - 1; i > mostInnerVarPos; --i)
327+ for (csize i = numClauses - 1; i > mostInnerVarPos; --i)
328 {
329 innerFlwor->remove_clause(i);
330 }
331@@ -563,8 +563,8 @@
332 {
333 block_expr* seqExpr = static_cast<block_expr*>(returnExpr);
334
335- ulong numArgs = seqExpr->size();
336- ulong arg;
337+ csize numArgs = seqExpr->size();
338+ csize arg;
339 for (arg = 0; arg < numArgs; ++arg)
340 {
341 if ((*seqExpr)[arg]->get_function_kind() !=
342@@ -590,9 +590,9 @@
343 }
344 else
345 {
346- // All the variables referenced by the inner domain expr are defined after
347- // the outer var. In this case, Find the flwor expr defining the outer var
348- // and create the index just before this flwor.
349+ // The inner domain expr does not reference any flwor vars. In this case,
350+ // find the flwor expr defining the outer var and create the index just
351+ // before this flwor.
352 flwor_expr* outerFlworExpr = NULL;
353 ulong outerPosInStack = 0;
354 ulong dummy = 0;
355
356=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9197.iter'
357--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9197.iter 2012-05-03 12:31:51 +0000
358+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9197.iter 2012-06-14 14:31:26 +0000
359@@ -1,33 +1,33 @@
360 Iterator tree for main query:
361-<flwor::FLWORIterator>
362- <LetVariable name="$$opt_temp_0" materialize="true">
363- <HoistIterator>
364- <OpToIterator>
365- <SingletonIterator value="xs:integer(1)"/>
366- <SingletonIterator value="xs:integer(2)"/>
367- </OpToIterator>
368- </HoistIterator>
369- </LetVariable>
370- <ReturnClause>
371- <SequentialIterator>
372- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
373- <flwor::FLWORIterator>
374- <ForVariable name="$$opt_temp_2">
375- <UnhoistIterator>
376- <LetVarIterator varname="$$opt_temp_0"/>
377- </UnhoistIterator>
378- </ForVariable>
379- <ReturnClause>
380- <ValueIndexEntryBuilderIterator>
381- <ForVarIterator varname="$$opt_temp_2"/>
382- <ForVarIterator varname="$$opt_temp_2"/>
383- </ValueIndexEntryBuilderIterator>
384- </ReturnClause>
385- </flwor::FLWORIterator>
386- </CreateInternalIndexIterator>
387- <ElementIterator>
388- <SingletonIterator value="xs:QName(,,karteikasten)"/>
389- <EnclosedIterator attr_cont="false">
390+<ElementIterator>
391+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
392+ <EnclosedIterator attr_cont="false">
393+ <flwor::FLWORIterator>
394+ <LetVariable name="$$opt_temp_0" materialize="true">
395+ <HoistIterator>
396+ <OpToIterator>
397+ <SingletonIterator value="xs:integer(1)"/>
398+ <SingletonIterator value="xs:integer(2)"/>
399+ </OpToIterator>
400+ </HoistIterator>
401+ </LetVariable>
402+ <ReturnClause>
403+ <SequentialIterator>
404+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
405+ <flwor::FLWORIterator>
406+ <ForVariable name="$$opt_temp_2">
407+ <UnhoistIterator>
408+ <LetVarIterator varname="$$opt_temp_0"/>
409+ </UnhoistIterator>
410+ </ForVariable>
411+ <ReturnClause>
412+ <ValueIndexEntryBuilderIterator>
413+ <ForVarIterator varname="$$opt_temp_2"/>
414+ <ForVarIterator varname="$$opt_temp_2"/>
415+ </ValueIndexEntryBuilderIterator>
416+ </ReturnClause>
417+ </flwor::FLWORIterator>
418+ </CreateInternalIndexIterator>
419 <flwor::FLWORIterator>
420 <ForVariable name="book">
421 <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
422@@ -64,9 +64,9 @@
423 </ElementIterator>
424 </ReturnClause>
425 </flwor::FLWORIterator>
426- </EnclosedIterator>
427- </ElementIterator>
428- </SequentialIterator>
429- </ReturnClause>
430-</flwor::FLWORIterator>
431+ </SequentialIterator>
432+ </ReturnClause>
433+ </flwor::FLWORIterator>
434+ </EnclosedIterator>
435+</ElementIterator>
436
437
438=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9198.iter'
439--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9198.iter 2012-05-03 12:31:51 +0000
440+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9198.iter 2012-06-14 14:31:26 +0000
441@@ -1,33 +1,33 @@
442 Iterator tree for main query:
443-<flwor::FLWORIterator>
444- <LetVariable name="$$opt_temp_0" materialize="true">
445- <HoistIterator>
446- <OpToIterator>
447- <SingletonIterator value="xs:integer(1)"/>
448- <SingletonIterator value="xs:integer(2)"/>
449- </OpToIterator>
450- </HoistIterator>
451- </LetVariable>
452- <ReturnClause>
453- <SequentialIterator>
454- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
455- <flwor::FLWORIterator>
456- <ForVariable name="$$opt_temp_2">
457- <UnhoistIterator>
458- <LetVarIterator varname="$$opt_temp_0"/>
459- </UnhoistIterator>
460- </ForVariable>
461- <ReturnClause>
462- <ValueIndexEntryBuilderIterator>
463- <ForVarIterator varname="$$opt_temp_2"/>
464- <ForVarIterator varname="$$opt_temp_2"/>
465- </ValueIndexEntryBuilderIterator>
466- </ReturnClause>
467- </flwor::FLWORIterator>
468- </CreateInternalIndexIterator>
469- <ElementIterator>
470- <SingletonIterator value="xs:QName(,,karteikasten)"/>
471- <EnclosedIterator attr_cont="false">
472+<ElementIterator>
473+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
474+ <EnclosedIterator attr_cont="false">
475+ <flwor::FLWORIterator>
476+ <LetVariable name="$$opt_temp_0" materialize="true">
477+ <HoistIterator>
478+ <OpToIterator>
479+ <SingletonIterator value="xs:integer(1)"/>
480+ <SingletonIterator value="xs:integer(2)"/>
481+ </OpToIterator>
482+ </HoistIterator>
483+ </LetVariable>
484+ <ReturnClause>
485+ <SequentialIterator>
486+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
487+ <flwor::FLWORIterator>
488+ <ForVariable name="$$opt_temp_2">
489+ <UnhoistIterator>
490+ <LetVarIterator varname="$$opt_temp_0"/>
491+ </UnhoistIterator>
492+ </ForVariable>
493+ <ReturnClause>
494+ <ValueIndexEntryBuilderIterator>
495+ <ForVarIterator varname="$$opt_temp_2"/>
496+ <ForVarIterator varname="$$opt_temp_2"/>
497+ </ValueIndexEntryBuilderIterator>
498+ </ReturnClause>
499+ </flwor::FLWORIterator>
500+ </CreateInternalIndexIterator>
501 <flwor::FLWORIterator>
502 <ForVariable name="book">
503 <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
504@@ -67,9 +67,9 @@
505 </ElementIterator>
506 </ReturnClause>
507 </flwor::FLWORIterator>
508- </EnclosedIterator>
509- </ElementIterator>
510- </SequentialIterator>
511- </ReturnClause>
512-</flwor::FLWORIterator>
513+ </SequentialIterator>
514+ </ReturnClause>
515+ </flwor::FLWORIterator>
516+ </EnclosedIterator>
517+</ElementIterator>
518
519
520=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9199.iter'
521--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9199.iter 2012-05-03 12:31:51 +0000
522+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9199.iter 2012-06-14 14:31:26 +0000
523@@ -1,33 +1,33 @@
524 Iterator tree for main query:
525-<flwor::FLWORIterator>
526- <LetVariable name="$$opt_temp_0" materialize="true">
527- <HoistIterator>
528- <OpToIterator>
529- <SingletonIterator value="xs:integer(1)"/>
530- <SingletonIterator value="xs:integer(2)"/>
531- </OpToIterator>
532- </HoistIterator>
533- </LetVariable>
534- <ReturnClause>
535- <SequentialIterator>
536- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
537- <flwor::FLWORIterator>
538- <ForVariable name="$$opt_temp_2">
539- <UnhoistIterator>
540- <LetVarIterator varname="$$opt_temp_0"/>
541- </UnhoistIterator>
542- </ForVariable>
543- <ReturnClause>
544- <ValueIndexEntryBuilderIterator>
545- <ForVarIterator varname="$$opt_temp_2"/>
546- <ForVarIterator varname="$$opt_temp_2"/>
547- </ValueIndexEntryBuilderIterator>
548- </ReturnClause>
549- </flwor::FLWORIterator>
550- </CreateInternalIndexIterator>
551- <ElementIterator>
552- <SingletonIterator value="xs:QName(,,karteikasten)"/>
553- <EnclosedIterator attr_cont="false">
554+<ElementIterator>
555+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
556+ <EnclosedIterator attr_cont="false">
557+ <flwor::FLWORIterator>
558+ <LetVariable name="$$opt_temp_0" materialize="true">
559+ <HoistIterator>
560+ <OpToIterator>
561+ <SingletonIterator value="xs:integer(1)"/>
562+ <SingletonIterator value="xs:integer(2)"/>
563+ </OpToIterator>
564+ </HoistIterator>
565+ </LetVariable>
566+ <ReturnClause>
567+ <SequentialIterator>
568+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
569+ <flwor::FLWORIterator>
570+ <ForVariable name="$$opt_temp_2">
571+ <UnhoistIterator>
572+ <LetVarIterator varname="$$opt_temp_0"/>
573+ </UnhoistIterator>
574+ </ForVariable>
575+ <ReturnClause>
576+ <ValueIndexEntryBuilderIterator>
577+ <ForVarIterator varname="$$opt_temp_2"/>
578+ <ForVarIterator varname="$$opt_temp_2"/>
579+ </ValueIndexEntryBuilderIterator>
580+ </ReturnClause>
581+ </flwor::FLWORIterator>
582+ </CreateInternalIndexIterator>
583 <flwor::FLWORIterator>
584 <ForVariable name="book">
585 <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
586@@ -67,9 +67,9 @@
587 </ElementIterator>
588 </ReturnClause>
589 </flwor::FLWORIterator>
590- </EnclosedIterator>
591- </ElementIterator>
592- </SequentialIterator>
593- </ReturnClause>
594-</flwor::FLWORIterator>
595+ </SequentialIterator>
596+ </ReturnClause>
597+ </flwor::FLWORIterator>
598+ </EnclosedIterator>
599+</ElementIterator>
600
601
602=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9206.iter'
603--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9206.iter 2012-05-03 12:31:51 +0000
604+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9206.iter 2012-06-14 14:31:26 +0000
605@@ -1,38 +1,38 @@
606 Iterator tree for main query:
607-<flwor::FLWORIterator>
608- <LetVariable name="$$opt_temp_0" materialize="true">
609- <HoistIterator>
610- <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
611- <FnDocIterator>
612- <SingletonIterator value="xs:string(books.xml)"/>
613- </FnDocIterator>
614- </DescendantAxisIterator>
615- </HoistIterator>
616- </LetVariable>
617- <ReturnClause>
618- <SequentialIterator>
619- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
620- <flwor::FLWORIterator>
621- <ForVariable name="$$opt_temp_1">
622- <UnhoistIterator>
623- <LetVarIterator varname="$$opt_temp_0"/>
624- </UnhoistIterator>
625- </ForVariable>
626- <ReturnClause>
627- <ValueIndexEntryBuilderIterator>
628- <ForVarIterator varname="$$opt_temp_1"/>
629- <FnCountIterator>
630- <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
631+<ElementIterator>
632+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
633+ <EnclosedIterator attr_cont="false">
634+ <flwor::FLWORIterator>
635+ <LetVariable name="$$opt_temp_0" materialize="true">
636+ <HoistIterator>
637+ <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
638+ <FnDocIterator>
639+ <SingletonIterator value="xs:string(books.xml)"/>
640+ </FnDocIterator>
641+ </DescendantAxisIterator>
642+ </HoistIterator>
643+ </LetVariable>
644+ <ReturnClause>
645+ <SequentialIterator>
646+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
647+ <flwor::FLWORIterator>
648+ <ForVariable name="$$opt_temp_1">
649+ <UnhoistIterator>
650+ <LetVarIterator varname="$$opt_temp_0"/>
651+ </UnhoistIterator>
652+ </ForVariable>
653+ <ReturnClause>
654+ <ValueIndexEntryBuilderIterator>
655 <ForVarIterator varname="$$opt_temp_1"/>
656- </ChildAxisIterator>
657- </FnCountIterator>
658- </ValueIndexEntryBuilderIterator>
659- </ReturnClause>
660- </flwor::FLWORIterator>
661- </CreateInternalIndexIterator>
662- <ElementIterator>
663- <SingletonIterator value="xs:QName(,,karteikasten)"/>
664- <EnclosedIterator attr_cont="false">
665+ <FnCountIterator>
666+ <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
667+ <ForVarIterator varname="$$opt_temp_1"/>
668+ </ChildAxisIterator>
669+ </FnCountIterator>
670+ </ValueIndexEntryBuilderIterator>
671+ </ReturnClause>
672+ </flwor::FLWORIterator>
673+ </CreateInternalIndexIterator>
674 <flwor::FLWORIterator>
675 <ForVariable name="anzahl">
676 <OpToIterator>
677@@ -60,9 +60,9 @@
678 </ElementIterator>
679 </ReturnClause>
680 </flwor::FLWORIterator>
681- </EnclosedIterator>
682- </ElementIterator>
683- </SequentialIterator>
684- </ReturnClause>
685-</flwor::FLWORIterator>
686+ </SequentialIterator>
687+ </ReturnClause>
688+ </flwor::FLWORIterator>
689+ </EnclosedIterator>
690+</ElementIterator>
691
692
693=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9207.iter'
694--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9207.iter 2012-05-03 12:31:51 +0000
695+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9207.iter 2012-06-14 14:31:26 +0000
696@@ -1,33 +1,33 @@
697 Iterator tree for main query:
698-<flwor::FLWORIterator>
699- <LetVariable name="$$opt_temp_0" materialize="true">
700- <HoistIterator>
701- <OpToIterator>
702- <SingletonIterator value="xs:integer(1)"/>
703- <SingletonIterator value="xs:integer(2)"/>
704- </OpToIterator>
705- </HoistIterator>
706- </LetVariable>
707- <ReturnClause>
708- <SequentialIterator>
709- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
710- <flwor::FLWORIterator>
711- <ForVariable name="$$opt_temp_2">
712- <UnhoistIterator>
713- <LetVarIterator varname="$$opt_temp_0"/>
714- </UnhoistIterator>
715- </ForVariable>
716- <ReturnClause>
717- <ValueIndexEntryBuilderIterator>
718- <ForVarIterator varname="$$opt_temp_2"/>
719- <ForVarIterator varname="$$opt_temp_2"/>
720- </ValueIndexEntryBuilderIterator>
721- </ReturnClause>
722- </flwor::FLWORIterator>
723- </CreateInternalIndexIterator>
724- <ElementIterator>
725- <SingletonIterator value="xs:QName(,,karteikasten)"/>
726- <EnclosedIterator attr_cont="false">
727+<ElementIterator>
728+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
729+ <EnclosedIterator attr_cont="false">
730+ <flwor::FLWORIterator>
731+ <LetVariable name="$$opt_temp_0" materialize="true">
732+ <HoistIterator>
733+ <OpToIterator>
734+ <SingletonIterator value="xs:integer(1)"/>
735+ <SingletonIterator value="xs:integer(2)"/>
736+ </OpToIterator>
737+ </HoistIterator>
738+ </LetVariable>
739+ <ReturnClause>
740+ <SequentialIterator>
741+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
742+ <flwor::FLWORIterator>
743+ <ForVariable name="$$opt_temp_2">
744+ <UnhoistIterator>
745+ <LetVarIterator varname="$$opt_temp_0"/>
746+ </UnhoistIterator>
747+ </ForVariable>
748+ <ReturnClause>
749+ <ValueIndexEntryBuilderIterator>
750+ <ForVarIterator varname="$$opt_temp_2"/>
751+ <ForVarIterator varname="$$opt_temp_2"/>
752+ </ValueIndexEntryBuilderIterator>
753+ </ReturnClause>
754+ </flwor::FLWORIterator>
755+ </CreateInternalIndexIterator>
756 <flwor::FLWORIterator>
757 <ForVariable name="book">
758 <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
759@@ -67,9 +67,9 @@
760 </ElementIterator>
761 </ReturnClause>
762 </flwor::FLWORIterator>
763- </EnclosedIterator>
764- </ElementIterator>
765- </SequentialIterator>
766- </ReturnClause>
767-</flwor::FLWORIterator>
768+ </SequentialIterator>
769+ </ReturnClause>
770+ </flwor::FLWORIterator>
771+ </EnclosedIterator>
772+</ElementIterator>
773
774
775=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9210.iter'
776--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9210.iter 2012-05-03 12:31:51 +0000
777+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9210.iter 2012-06-14 14:31:26 +0000
778@@ -1,38 +1,38 @@
779 Iterator tree for main query:
780-<flwor::FLWORIterator>
781- <LetVariable name="$$opt_temp_0" materialize="true">
782- <HoistIterator>
783- <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
784- <FnDocIterator>
785- <SingletonIterator value="xs:string(books.xml)"/>
786- </FnDocIterator>
787- </DescendantAxisIterator>
788- </HoistIterator>
789- </LetVariable>
790- <ReturnClause>
791- <SequentialIterator>
792- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
793- <flwor::FLWORIterator>
794- <ForVariable name="$$opt_temp_1">
795- <UnhoistIterator>
796- <LetVarIterator varname="$$opt_temp_0"/>
797- </UnhoistIterator>
798- </ForVariable>
799- <ReturnClause>
800- <ValueIndexEntryBuilderIterator>
801- <ForVarIterator varname="$$opt_temp_1"/>
802- <FnCountIterator>
803- <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
804+<ElementIterator>
805+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
806+ <EnclosedIterator attr_cont="false">
807+ <flwor::FLWORIterator>
808+ <LetVariable name="$$opt_temp_0" materialize="true">
809+ <HoistIterator>
810+ <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
811+ <FnDocIterator>
812+ <SingletonIterator value="xs:string(books.xml)"/>
813+ </FnDocIterator>
814+ </DescendantAxisIterator>
815+ </HoistIterator>
816+ </LetVariable>
817+ <ReturnClause>
818+ <SequentialIterator>
819+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
820+ <flwor::FLWORIterator>
821+ <ForVariable name="$$opt_temp_1">
822+ <UnhoistIterator>
823+ <LetVarIterator varname="$$opt_temp_0"/>
824+ </UnhoistIterator>
825+ </ForVariable>
826+ <ReturnClause>
827+ <ValueIndexEntryBuilderIterator>
828 <ForVarIterator varname="$$opt_temp_1"/>
829- </ChildAxisIterator>
830- </FnCountIterator>
831- </ValueIndexEntryBuilderIterator>
832- </ReturnClause>
833- </flwor::FLWORIterator>
834- </CreateInternalIndexIterator>
835- <ElementIterator>
836- <SingletonIterator value="xs:QName(,,karteikasten)"/>
837- <EnclosedIterator attr_cont="false">
838+ <FnCountIterator>
839+ <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
840+ <ForVarIterator varname="$$opt_temp_1"/>
841+ </ChildAxisIterator>
842+ </FnCountIterator>
843+ </ValueIndexEntryBuilderIterator>
844+ </ReturnClause>
845+ </flwor::FLWORIterator>
846+ </CreateInternalIndexIterator>
847 <flwor::FLWORIterator>
848 <ForVariable name="anzahl">
849 <OpToIterator>
850@@ -64,9 +64,9 @@
851 </ElementIterator>
852 </ReturnClause>
853 </flwor::FLWORIterator>
854- </EnclosedIterator>
855- </ElementIterator>
856- </SequentialIterator>
857- </ReturnClause>
858-</flwor::FLWORIterator>
859+ </SequentialIterator>
860+ </ReturnClause>
861+ </flwor::FLWORIterator>
862+ </EnclosedIterator>
863+</ElementIterator>
864
865
866=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9211.iter'
867--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9211.iter 2012-05-03 12:31:51 +0000
868+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9211.iter 2012-06-14 14:31:26 +0000
869@@ -1,38 +1,38 @@
870 Iterator tree for main query:
871-<flwor::FLWORIterator>
872- <LetVariable name="$$opt_temp_0" materialize="true">
873- <HoistIterator>
874- <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
875- <FnDocIterator>
876- <SingletonIterator value="xs:string(books.xml)"/>
877- </FnDocIterator>
878- </DescendantAxisIterator>
879- </HoistIterator>
880- </LetVariable>
881- <ReturnClause>
882- <SequentialIterator>
883- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
884- <flwor::FLWORIterator>
885- <ForVariable name="$$opt_temp_1">
886- <UnhoistIterator>
887- <LetVarIterator varname="$$opt_temp_0"/>
888- </UnhoistIterator>
889- </ForVariable>
890- <ReturnClause>
891- <ValueIndexEntryBuilderIterator>
892- <ForVarIterator varname="$$opt_temp_1"/>
893- <FnCountIterator>
894- <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
895+<ElementIterator>
896+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
897+ <EnclosedIterator attr_cont="false">
898+ <flwor::FLWORIterator>
899+ <LetVariable name="$$opt_temp_0" materialize="true">
900+ <HoistIterator>
901+ <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
902+ <FnDocIterator>
903+ <SingletonIterator value="xs:string(books.xml)"/>
904+ </FnDocIterator>
905+ </DescendantAxisIterator>
906+ </HoistIterator>
907+ </LetVariable>
908+ <ReturnClause>
909+ <SequentialIterator>
910+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
911+ <flwor::FLWORIterator>
912+ <ForVariable name="$$opt_temp_1">
913+ <UnhoistIterator>
914+ <LetVarIterator varname="$$opt_temp_0"/>
915+ </UnhoistIterator>
916+ </ForVariable>
917+ <ReturnClause>
918+ <ValueIndexEntryBuilderIterator>
919 <ForVarIterator varname="$$opt_temp_1"/>
920- </ChildAxisIterator>
921- </FnCountIterator>
922- </ValueIndexEntryBuilderIterator>
923- </ReturnClause>
924- </flwor::FLWORIterator>
925- </CreateInternalIndexIterator>
926- <ElementIterator>
927- <SingletonIterator value="xs:QName(,,karteikasten)"/>
928- <EnclosedIterator attr_cont="false">
929+ <FnCountIterator>
930+ <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
931+ <ForVarIterator varname="$$opt_temp_1"/>
932+ </ChildAxisIterator>
933+ </FnCountIterator>
934+ </ValueIndexEntryBuilderIterator>
935+ </ReturnClause>
936+ </flwor::FLWORIterator>
937+ </CreateInternalIndexIterator>
938 <flwor::FLWORIterator>
939 <ForVariable name="anzahl">
940 <OpToIterator>
941@@ -67,9 +67,9 @@
942 </ElementIterator>
943 </ReturnClause>
944 </flwor::FLWORIterator>
945- </EnclosedIterator>
946- </ElementIterator>
947- </SequentialIterator>
948- </ReturnClause>
949-</flwor::FLWORIterator>
950+ </SequentialIterator>
951+ </ReturnClause>
952+ </flwor::FLWORIterator>
953+ </EnclosedIterator>
954+</ElementIterator>
955
956
957=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9212.iter'
958--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9212.iter 2012-05-03 12:31:51 +0000
959+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9212.iter 2012-06-14 14:31:26 +0000
960@@ -1,38 +1,38 @@
961 Iterator tree for main query:
962-<flwor::FLWORIterator>
963- <LetVariable name="$$opt_temp_0" materialize="true">
964- <HoistIterator>
965- <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
966- <FnDocIterator>
967- <SingletonIterator value="xs:string(books.xml)"/>
968- </FnDocIterator>
969- </DescendantAxisIterator>
970- </HoistIterator>
971- </LetVariable>
972- <ReturnClause>
973- <SequentialIterator>
974- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
975- <flwor::FLWORIterator>
976- <ForVariable name="$$opt_temp_1">
977- <UnhoistIterator>
978- <LetVarIterator varname="$$opt_temp_0"/>
979- </UnhoistIterator>
980- </ForVariable>
981- <ReturnClause>
982- <ValueIndexEntryBuilderIterator>
983- <ForVarIterator varname="$$opt_temp_1"/>
984- <FnCountIterator>
985- <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
986+<ElementIterator>
987+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
988+ <EnclosedIterator attr_cont="false">
989+ <flwor::FLWORIterator>
990+ <LetVariable name="$$opt_temp_0" materialize="true">
991+ <HoistIterator>
992+ <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
993+ <FnDocIterator>
994+ <SingletonIterator value="xs:string(books.xml)"/>
995+ </FnDocIterator>
996+ </DescendantAxisIterator>
997+ </HoistIterator>
998+ </LetVariable>
999+ <ReturnClause>
1000+ <SequentialIterator>
1001+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1002+ <flwor::FLWORIterator>
1003+ <ForVariable name="$$opt_temp_1">
1004+ <UnhoistIterator>
1005+ <LetVarIterator varname="$$opt_temp_0"/>
1006+ </UnhoistIterator>
1007+ </ForVariable>
1008+ <ReturnClause>
1009+ <ValueIndexEntryBuilderIterator>
1010 <ForVarIterator varname="$$opt_temp_1"/>
1011- </ChildAxisIterator>
1012- </FnCountIterator>
1013- </ValueIndexEntryBuilderIterator>
1014- </ReturnClause>
1015- </flwor::FLWORIterator>
1016- </CreateInternalIndexIterator>
1017- <ElementIterator>
1018- <SingletonIterator value="xs:QName(,,karteikasten)"/>
1019- <EnclosedIterator attr_cont="false">
1020+ <FnCountIterator>
1021+ <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
1022+ <ForVarIterator varname="$$opt_temp_1"/>
1023+ </ChildAxisIterator>
1024+ </FnCountIterator>
1025+ </ValueIndexEntryBuilderIterator>
1026+ </ReturnClause>
1027+ </flwor::FLWORIterator>
1028+ </CreateInternalIndexIterator>
1029 <flwor::FLWORIterator>
1030 <ForVariable name="book">
1031 <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
1032@@ -75,9 +75,9 @@
1033 </ElementIterator>
1034 </ReturnClause>
1035 </flwor::FLWORIterator>
1036- </EnclosedIterator>
1037- </ElementIterator>
1038- </SequentialIterator>
1039- </ReturnClause>
1040-</flwor::FLWORIterator>
1041+ </SequentialIterator>
1042+ </ReturnClause>
1043+ </flwor::FLWORIterator>
1044+ </EnclosedIterator>
1045+</ElementIterator>
1046
1047
1048=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9389.iter'
1049--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9389.iter 2012-05-03 12:31:51 +0000
1050+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9389.iter 2012-06-14 14:31:26 +0000
1051@@ -1,38 +1,38 @@
1052 Iterator tree for main query:
1053-<flwor::FLWORIterator>
1054- <LetVariable name="$$opt_temp_0" materialize="true">
1055- <HoistIterator>
1056- <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
1057- <FnDocIterator>
1058- <SingletonIterator value="xs:string(books.xml)"/>
1059- </FnDocIterator>
1060- </DescendantAxisIterator>
1061- </HoistIterator>
1062- </LetVariable>
1063- <ReturnClause>
1064- <SequentialIterator>
1065- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1066- <flwor::FLWORIterator>
1067- <ForVariable name="$$opt_temp_1">
1068- <UnhoistIterator>
1069- <LetVarIterator varname="$$opt_temp_0"/>
1070- </UnhoistIterator>
1071- </ForVariable>
1072- <ReturnClause>
1073- <ValueIndexEntryBuilderIterator>
1074- <ForVarIterator varname="$$opt_temp_1"/>
1075- <FnCountIterator>
1076- <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
1077+<ElementIterator>
1078+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
1079+ <EnclosedIterator attr_cont="false">
1080+ <flwor::FLWORIterator>
1081+ <LetVariable name="$$opt_temp_0" materialize="true">
1082+ <HoistIterator>
1083+ <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
1084+ <FnDocIterator>
1085+ <SingletonIterator value="xs:string(books.xml)"/>
1086+ </FnDocIterator>
1087+ </DescendantAxisIterator>
1088+ </HoistIterator>
1089+ </LetVariable>
1090+ <ReturnClause>
1091+ <SequentialIterator>
1092+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1093+ <flwor::FLWORIterator>
1094+ <ForVariable name="$$opt_temp_1">
1095+ <UnhoistIterator>
1096+ <LetVarIterator varname="$$opt_temp_0"/>
1097+ </UnhoistIterator>
1098+ </ForVariable>
1099+ <ReturnClause>
1100+ <ValueIndexEntryBuilderIterator>
1101 <ForVarIterator varname="$$opt_temp_1"/>
1102- </ChildAxisIterator>
1103- </FnCountIterator>
1104- </ValueIndexEntryBuilderIterator>
1105- </ReturnClause>
1106- </flwor::FLWORIterator>
1107- </CreateInternalIndexIterator>
1108- <ElementIterator>
1109- <SingletonIterator value="xs:QName(,,karteikasten)"/>
1110- <EnclosedIterator attr_cont="false">
1111+ <FnCountIterator>
1112+ <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
1113+ <ForVarIterator varname="$$opt_temp_1"/>
1114+ </ChildAxisIterator>
1115+ </FnCountIterator>
1116+ </ValueIndexEntryBuilderIterator>
1117+ </ReturnClause>
1118+ </flwor::FLWORIterator>
1119+ </CreateInternalIndexIterator>
1120 <flwor::FLWORIterator>
1121 <ForVariable name="anzahl">
1122 <OpToIterator>
1123@@ -62,9 +62,9 @@
1124 </ElementIterator>
1125 </ReturnClause>
1126 </flwor::FLWORIterator>
1127- </EnclosedIterator>
1128- </ElementIterator>
1129- </SequentialIterator>
1130- </ReturnClause>
1131-</flwor::FLWORIterator>
1132+ </SequentialIterator>
1133+ </ReturnClause>
1134+ </flwor::FLWORIterator>
1135+ </EnclosedIterator>
1136+</ElementIterator>
1137
1138
1139=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9391.iter'
1140--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9391.iter 2012-05-03 12:31:51 +0000
1141+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9391.iter 2012-06-14 14:31:26 +0000
1142@@ -1,38 +1,38 @@
1143 Iterator tree for main query:
1144-<flwor::FLWORIterator>
1145- <LetVariable name="$$opt_temp_0" materialize="true">
1146- <HoistIterator>
1147- <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
1148- <FnDocIterator>
1149- <SingletonIterator value="xs:string(books.xml)"/>
1150- </FnDocIterator>
1151- </DescendantAxisIterator>
1152- </HoistIterator>
1153- </LetVariable>
1154- <ReturnClause>
1155- <SequentialIterator>
1156- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1157- <flwor::FLWORIterator>
1158- <ForVariable name="$$opt_temp_1">
1159- <UnhoistIterator>
1160- <LetVarIterator varname="$$opt_temp_0"/>
1161- </UnhoistIterator>
1162- </ForVariable>
1163- <ReturnClause>
1164- <ValueIndexEntryBuilderIterator>
1165- <ForVarIterator varname="$$opt_temp_1"/>
1166- <FnCountIterator>
1167- <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
1168+<ElementIterator>
1169+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
1170+ <EnclosedIterator attr_cont="false">
1171+ <flwor::FLWORIterator>
1172+ <LetVariable name="$$opt_temp_0" materialize="true">
1173+ <HoistIterator>
1174+ <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
1175+ <FnDocIterator>
1176+ <SingletonIterator value="xs:string(books.xml)"/>
1177+ </FnDocIterator>
1178+ </DescendantAxisIterator>
1179+ </HoistIterator>
1180+ </LetVariable>
1181+ <ReturnClause>
1182+ <SequentialIterator>
1183+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1184+ <flwor::FLWORIterator>
1185+ <ForVariable name="$$opt_temp_1">
1186+ <UnhoistIterator>
1187+ <LetVarIterator varname="$$opt_temp_0"/>
1188+ </UnhoistIterator>
1189+ </ForVariable>
1190+ <ReturnClause>
1191+ <ValueIndexEntryBuilderIterator>
1192 <ForVarIterator varname="$$opt_temp_1"/>
1193- </ChildAxisIterator>
1194- </FnCountIterator>
1195- </ValueIndexEntryBuilderIterator>
1196- </ReturnClause>
1197- </flwor::FLWORIterator>
1198- </CreateInternalIndexIterator>
1199- <ElementIterator>
1200- <SingletonIterator value="xs:QName(,,karteikasten)"/>
1201- <EnclosedIterator attr_cont="false">
1202+ <FnCountIterator>
1203+ <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
1204+ <ForVarIterator varname="$$opt_temp_1"/>
1205+ </ChildAxisIterator>
1206+ </FnCountIterator>
1207+ </ValueIndexEntryBuilderIterator>
1208+ </ReturnClause>
1209+ </flwor::FLWORIterator>
1210+ </CreateInternalIndexIterator>
1211 <flwor::FLWORIterator>
1212 <ForVariable name="anzahl">
1213 <OpToIterator>
1214@@ -67,9 +67,9 @@
1215 </ElementIterator>
1216 </ReturnClause>
1217 </flwor::FLWORIterator>
1218- </EnclosedIterator>
1219- </ElementIterator>
1220- </SequentialIterator>
1221- </ReturnClause>
1222-</flwor::FLWORIterator>
1223+ </SequentialIterator>
1224+ </ReturnClause>
1225+ </flwor::FLWORIterator>
1226+ </EnclosedIterator>
1227+</ElementIterator>
1228
1229
1230=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9392.iter'
1231--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9392.iter 2012-05-03 12:31:51 +0000
1232+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9392.iter 2012-06-14 14:31:26 +0000
1233@@ -1,45 +1,45 @@
1234 Iterator tree for main query:
1235-<flwor::FLWORIterator>
1236- <LetVariable name="$$opt_temp_0" materialize="true">
1237- <HoistIterator>
1238- <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
1239- <FnDocIterator>
1240- <SingletonIterator value="xs:string(books.xml)"/>
1241- </FnDocIterator>
1242- </DescendantAxisIterator>
1243- </HoistIterator>
1244- </LetVariable>
1245- <ReturnClause>
1246- <SequentialIterator>
1247- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1248- <flwor::FLWORIterator>
1249- <ForVariable name="$$opt_temp_1">
1250- <UnhoistIterator>
1251- <LetVarIterator varname="$$opt_temp_0"/>
1252- </UnhoistIterator>
1253- </ForVariable>
1254- <ReturnClause>
1255- <ValueIndexEntryBuilderIterator>
1256- <ForVarIterator varname="$$opt_temp_1"/>
1257- <FnCountIterator>
1258- <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
1259- <ForVarIterator varname="$$opt_temp_1"/>
1260- </ChildAxisIterator>
1261- </FnCountIterator>
1262- </ValueIndexEntryBuilderIterator>
1263- </ReturnClause>
1264- </flwor::FLWORIterator>
1265- </CreateInternalIndexIterator>
1266- <ElementIterator>
1267- <SingletonIterator value="xs:QName(,,karteikasten)"/>
1268- <EnclosedIterator attr_cont="false">
1269- <ElementIterator>
1270- <SingletonIterator value="xs:QName(,,gruppe)"/>
1271- <AttributeIterator qname="xs:QName(,,anzahl)">
1272- <FnDataIterator>
1273- <FnConcatIterator>
1274- <SingletonIterator value="xs:string( )"/>
1275- <EnclosedIterator attr_cont="true">
1276+<ElementIterator>
1277+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
1278+ <EnclosedIterator attr_cont="false">
1279+ <ElementIterator>
1280+ <SingletonIterator value="xs:QName(,,gruppe)"/>
1281+ <AttributeIterator qname="xs:QName(,,anzahl)">
1282+ <FnDataIterator>
1283+ <FnConcatIterator>
1284+ <SingletonIterator value="xs:string( )"/>
1285+ <EnclosedIterator attr_cont="true">
1286+ <flwor::FLWORIterator>
1287+ <LetVariable name="$$opt_temp_0" materialize="true">
1288+ <HoistIterator>
1289+ <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
1290+ <FnDocIterator>
1291+ <SingletonIterator value="xs:string(books.xml)"/>
1292+ </FnDocIterator>
1293+ </DescendantAxisIterator>
1294+ </HoistIterator>
1295+ </LetVariable>
1296+ <ReturnClause>
1297+ <SequentialIterator>
1298+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1299+ <flwor::FLWORIterator>
1300+ <ForVariable name="$$opt_temp_1">
1301+ <UnhoistIterator>
1302+ <LetVarIterator varname="$$opt_temp_0"/>
1303+ </UnhoistIterator>
1304+ </ForVariable>
1305+ <ReturnClause>
1306+ <ValueIndexEntryBuilderIterator>
1307+ <ForVarIterator varname="$$opt_temp_1"/>
1308+ <FnCountIterator>
1309+ <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
1310+ <ForVarIterator varname="$$opt_temp_1"/>
1311+ </ChildAxisIterator>
1312+ </FnCountIterator>
1313+ </ValueIndexEntryBuilderIterator>
1314+ </ReturnClause>
1315+ </flwor::FLWORIterator>
1316+ </CreateInternalIndexIterator>
1317 <flwor::FLWORIterator>
1318 <ForVariable name="anzahl">
1319 <OpToIterator>
1320@@ -57,15 +57,15 @@
1321 <ForVarIterator varname="anzahl"/>
1322 </ReturnClause>
1323 </flwor::FLWORIterator>
1324- </EnclosedIterator>
1325- </FnConcatIterator>
1326- </FnDataIterator>
1327- </AttributeIterator>
1328- <FnConcatIterator/>
1329- </ElementIterator>
1330- </EnclosedIterator>
1331- </ElementIterator>
1332- </SequentialIterator>
1333- </ReturnClause>
1334-</flwor::FLWORIterator>
1335+ </SequentialIterator>
1336+ </ReturnClause>
1337+ </flwor::FLWORIterator>
1338+ </EnclosedIterator>
1339+ </FnConcatIterator>
1340+ </FnDataIterator>
1341+ </AttributeIterator>
1342+ <FnConcatIterator/>
1343+ </ElementIterator>
1344+ </EnclosedIterator>
1345+</ElementIterator>
1346
1347
1348=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9399.iter'
1349--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9399.iter 2012-05-03 12:31:51 +0000
1350+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9399.iter 2012-06-14 14:31:26 +0000
1351@@ -1,38 +1,38 @@
1352 Iterator tree for main query:
1353-<flwor::FLWORIterator>
1354- <LetVariable name="$$opt_temp_0" materialize="true">
1355- <HoistIterator>
1356- <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
1357- <FnDocIterator>
1358- <SingletonIterator value="xs:string(books.xml)"/>
1359- </FnDocIterator>
1360- </DescendantAxisIterator>
1361- </HoistIterator>
1362- </LetVariable>
1363- <ReturnClause>
1364- <SequentialIterator>
1365- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1366- <flwor::FLWORIterator>
1367- <ForVariable name="$$opt_temp_1">
1368- <UnhoistIterator>
1369- <LetVarIterator varname="$$opt_temp_0"/>
1370- </UnhoistIterator>
1371- </ForVariable>
1372- <ReturnClause>
1373- <ValueIndexEntryBuilderIterator>
1374- <ForVarIterator varname="$$opt_temp_1"/>
1375- <FnCountIterator>
1376- <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
1377+<ElementIterator>
1378+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
1379+ <EnclosedIterator attr_cont="false">
1380+ <flwor::FLWORIterator>
1381+ <LetVariable name="$$opt_temp_0" materialize="true">
1382+ <HoistIterator>
1383+ <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
1384+ <FnDocIterator>
1385+ <SingletonIterator value="xs:string(books.xml)"/>
1386+ </FnDocIterator>
1387+ </DescendantAxisIterator>
1388+ </HoistIterator>
1389+ </LetVariable>
1390+ <ReturnClause>
1391+ <SequentialIterator>
1392+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1393+ <flwor::FLWORIterator>
1394+ <ForVariable name="$$opt_temp_1">
1395+ <UnhoistIterator>
1396+ <LetVarIterator varname="$$opt_temp_0"/>
1397+ </UnhoistIterator>
1398+ </ForVariable>
1399+ <ReturnClause>
1400+ <ValueIndexEntryBuilderIterator>
1401 <ForVarIterator varname="$$opt_temp_1"/>
1402- </ChildAxisIterator>
1403- </FnCountIterator>
1404- </ValueIndexEntryBuilderIterator>
1405- </ReturnClause>
1406- </flwor::FLWORIterator>
1407- </CreateInternalIndexIterator>
1408- <ElementIterator>
1409- <SingletonIterator value="xs:QName(,,karteikasten)"/>
1410- <EnclosedIterator attr_cont="false">
1411+ <FnCountIterator>
1412+ <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
1413+ <ForVarIterator varname="$$opt_temp_1"/>
1414+ </ChildAxisIterator>
1415+ </FnCountIterator>
1416+ </ValueIndexEntryBuilderIterator>
1417+ </ReturnClause>
1418+ </flwor::FLWORIterator>
1419+ </CreateInternalIndexIterator>
1420 <flwor::FLWORIterator>
1421 <ForVariable name="anzahl">
1422 <OpToIterator>
1423@@ -61,9 +61,9 @@
1424 </ElementIterator>
1425 </ReturnClause>
1426 </flwor::FLWORIterator>
1427- </EnclosedIterator>
1428- </ElementIterator>
1429- </SequentialIterator>
1430- </ReturnClause>
1431-</flwor::FLWORIterator>
1432+ </SequentialIterator>
1433+ </ReturnClause>
1434+ </flwor::FLWORIterator>
1435+ </EnclosedIterator>
1436+</ElementIterator>
1437
1438
1439=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9400.iter'
1440--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9400.iter 2012-05-03 12:31:51 +0000
1441+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9400.iter 2012-06-14 14:31:26 +0000
1442@@ -1,38 +1,38 @@
1443 Iterator tree for main query:
1444-<flwor::FLWORIterator>
1445- <LetVariable name="$$opt_temp_0" materialize="true">
1446- <HoistIterator>
1447- <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
1448- <FnDocIterator>
1449- <SingletonIterator value="xs:string(books.xml)"/>
1450- </FnDocIterator>
1451- </DescendantAxisIterator>
1452- </HoistIterator>
1453- </LetVariable>
1454- <ReturnClause>
1455- <SequentialIterator>
1456- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1457- <flwor::FLWORIterator>
1458- <ForVariable name="$$opt_temp_1">
1459- <UnhoistIterator>
1460- <LetVarIterator varname="$$opt_temp_0"/>
1461- </UnhoistIterator>
1462- </ForVariable>
1463- <ReturnClause>
1464- <ValueIndexEntryBuilderIterator>
1465- <ForVarIterator varname="$$opt_temp_1"/>
1466- <FnCountIterator>
1467- <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
1468+<ElementIterator>
1469+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
1470+ <EnclosedIterator attr_cont="false">
1471+ <flwor::FLWORIterator>
1472+ <LetVariable name="$$opt_temp_0" materialize="true">
1473+ <HoistIterator>
1474+ <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
1475+ <FnDocIterator>
1476+ <SingletonIterator value="xs:string(books.xml)"/>
1477+ </FnDocIterator>
1478+ </DescendantAxisIterator>
1479+ </HoistIterator>
1480+ </LetVariable>
1481+ <ReturnClause>
1482+ <SequentialIterator>
1483+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1484+ <flwor::FLWORIterator>
1485+ <ForVariable name="$$opt_temp_1">
1486+ <UnhoistIterator>
1487+ <LetVarIterator varname="$$opt_temp_0"/>
1488+ </UnhoistIterator>
1489+ </ForVariable>
1490+ <ReturnClause>
1491+ <ValueIndexEntryBuilderIterator>
1492 <ForVarIterator varname="$$opt_temp_1"/>
1493- </ChildAxisIterator>
1494- </FnCountIterator>
1495- </ValueIndexEntryBuilderIterator>
1496- </ReturnClause>
1497- </flwor::FLWORIterator>
1498- </CreateInternalIndexIterator>
1499- <ElementIterator>
1500- <SingletonIterator value="xs:QName(,,karteikasten)"/>
1501- <EnclosedIterator attr_cont="false">
1502+ <FnCountIterator>
1503+ <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
1504+ <ForVarIterator varname="$$opt_temp_1"/>
1505+ </ChildAxisIterator>
1506+ </FnCountIterator>
1507+ </ValueIndexEntryBuilderIterator>
1508+ </ReturnClause>
1509+ </flwor::FLWORIterator>
1510+ </CreateInternalIndexIterator>
1511 <flwor::FLWORIterator>
1512 <ForVariable name="anzahl">
1513 <OpToIterator>
1514@@ -62,9 +62,9 @@
1515 </ElementIterator>
1516 </ReturnClause>
1517 </flwor::FLWORIterator>
1518- </EnclosedIterator>
1519- </ElementIterator>
1520- </SequentialIterator>
1521- </ReturnClause>
1522-</flwor::FLWORIterator>
1523+ </SequentialIterator>
1524+ </ReturnClause>
1525+ </flwor::FLWORIterator>
1526+ </EnclosedIterator>
1527+</ElementIterator>
1528
1529
1530=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/idx4.iter'
1531--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/idx4.iter 2012-05-03 12:31:51 +0000
1532+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/idx4.iter 2012-06-14 14:31:26 +0000
1533@@ -76,89 +76,85 @@
1534 </TreatIterator>
1535 </HoistIterator>
1536 </LetVariable>
1537+ <ForVariable name="prefix">
1538+ <flwor::FLWORIterator>
1539+ <ForVariable name="prefixE">
1540+ <InScopePrefixesIterator>
1541+ <TreatIterator quant="">
1542+ <LetVarIterator varname="e"/>
1543+ </TreatIterator>
1544+ </InScopePrefixesIterator>
1545+ </ForVariable>
1546+ <LetVariable name="$$opt_temp_1" materialize="true">
1547+ <HoistIterator>
1548+ <NamespaceUriForPrefixIterator>
1549+ <ForVarIterator varname="prefixE"/>
1550+ <UnhoistIterator>
1551+ <LetVarIterator varname="$$opt_temp_0"/>
1552+ </UnhoistIterator>
1553+ </NamespaceUriForPrefixIterator>
1554+ </HoistIterator>
1555+ </LetVariable>
1556+ <ForVariable name="prefixP">
1557+ <ProbeIndexPointValueIterator>
1558+ <SingletonIterator value="xs:QName(,,tempIndex0)"/>
1559+ <ForVarIterator varname="prefixE"/>
1560+ </ProbeIndexPointValueIterator>
1561+ </ForVariable>
1562+ <WhereClause>
1563+ <FnBooleanIterator>
1564+ <CompareIterator>
1565+ <UnhoistIterator>
1566+ <LetVarIterator varname="$$opt_temp_1"/>
1567+ </UnhoistIterator>
1568+ <NamespaceUriForPrefixIterator>
1569+ <ForVarIterator varname="prefixP"/>
1570+ <UnhoistIterator>
1571+ <ForVarIterator varname="$$opt_temp_2"/>
1572+ </UnhoistIterator>
1573+ </NamespaceUriForPrefixIterator>
1574+ </CompareIterator>
1575+ </FnBooleanIterator>
1576+ </WhereClause>
1577+ <ReturnClause>
1578+ <ForVarIterator varname="prefixE"/>
1579+ </ReturnClause>
1580+ </flwor::FLWORIterator>
1581+ </ForVariable>
1582 <ReturnClause>
1583- <flwor::FLWORIterator>
1584- <ForVariable name="prefix">
1585- <flwor::FLWORIterator>
1586- <ForVariable name="prefixE">
1587- <InScopePrefixesIterator>
1588- <TreatIterator quant="">
1589- <LetVarIterator varname="e"/>
1590- </TreatIterator>
1591- </InScopePrefixesIterator>
1592- </ForVariable>
1593- <LetVariable name="$$opt_temp_1" materialize="true">
1594- <HoistIterator>
1595- <NamespaceUriForPrefixIterator>
1596- <ForVarIterator varname="prefixE"/>
1597- <UnhoistIterator>
1598- <LetVarIterator varname="$$opt_temp_0"/>
1599- </UnhoistIterator>
1600- </NamespaceUriForPrefixIterator>
1601- </HoistIterator>
1602- </LetVariable>
1603- <ForVariable name="prefixP">
1604- <ProbeIndexPointValueIterator>
1605- <SingletonIterator value="xs:QName(,,tempIndex0)"/>
1606- <ForVarIterator varname="prefixE"/>
1607- </ProbeIndexPointValueIterator>
1608- </ForVariable>
1609- <WhereClause>
1610- <FnBooleanIterator>
1611- <CompareIterator>
1612- <UnhoistIterator>
1613- <LetVarIterator varname="$$opt_temp_1"/>
1614- </UnhoistIterator>
1615+ <FnConcatIterator>
1616+ <SingletonIterator value="xs:string( )"/>
1617+ <ElementIterator>
1618+ <SingletonIterator value="xs:QName(,,span)"/>
1619+ <AttributeIterator qname="xs:QName(,,class)">
1620+ <SingletonIterator value="xs:string(ns)"/>
1621+ </AttributeIterator>
1622+ <EnclosedIterator attr_cont="false">
1623+ <FnConcatIterator>
1624+ <ConcatStrIterator>
1625+ <SingletonIterator value="xs:string(xmlns:)"/>
1626+ <ForVarIterator varname="prefix"/>
1627+ <SingletonIterator value="xs:string(=")"/>
1628+ </ConcatStrIterator>
1629+ <ElementIterator>
1630+ <SingletonIterator value="xs:QName(,,span)"/>
1631+ <AttributeIterator qname="xs:QName(,,class)">
1632+ <SingletonIterator value="xs:string(nsUri)"/>
1633+ </AttributeIterator>
1634+ <EnclosedIterator attr_cont="false">
1635 <NamespaceUriForPrefixIterator>
1636- <ForVarIterator varname="prefixP"/>
1637+ <ForVarIterator varname="prefix"/>
1638 <UnhoistIterator>
1639- <ForVarIterator varname="$$opt_temp_2"/>
1640+ <ForVarIterator varname="$$opt_temp_3"/>
1641 </UnhoistIterator>
1642 </NamespaceUriForPrefixIterator>
1643- </CompareIterator>
1644- </FnBooleanIterator>
1645- </WhereClause>
1646- <ReturnClause>
1647- <ForVarIterator varname="prefixE"/>
1648- </ReturnClause>
1649- </flwor::FLWORIterator>
1650- </ForVariable>
1651- <ReturnClause>
1652- <FnConcatIterator>
1653- <SingletonIterator value="xs:string( )"/>
1654- <ElementIterator>
1655- <SingletonIterator value="xs:QName(,,span)"/>
1656- <AttributeIterator qname="xs:QName(,,class)">
1657- <SingletonIterator value="xs:string(ns)"/>
1658- </AttributeIterator>
1659- <EnclosedIterator attr_cont="false">
1660- <FnConcatIterator>
1661- <ConcatStrIterator>
1662- <SingletonIterator value="xs:string(xmlns:)"/>
1663- <ForVarIterator varname="prefix"/>
1664- <SingletonIterator value="xs:string(=")"/>
1665- </ConcatStrIterator>
1666- <ElementIterator>
1667- <SingletonIterator value="xs:QName(,,span)"/>
1668- <AttributeIterator qname="xs:QName(,,class)">
1669- <SingletonIterator value="xs:string(nsUri)"/>
1670- </AttributeIterator>
1671- <EnclosedIterator attr_cont="false">
1672- <NamespaceUriForPrefixIterator>
1673- <ForVarIterator varname="prefix"/>
1674- <UnhoistIterator>
1675- <ForVarIterator varname="$$opt_temp_3"/>
1676- </UnhoistIterator>
1677- </NamespaceUriForPrefixIterator>
1678- </EnclosedIterator>
1679- </ElementIterator>
1680- <SingletonIterator value="xs:string(")"/>
1681- </FnConcatIterator>
1682- </EnclosedIterator>
1683- </ElementIterator>
1684- </FnConcatIterator>
1685- </ReturnClause>
1686- </flwor::FLWORIterator>
1687+ </EnclosedIterator>
1688+ </ElementIterator>
1689+ <SingletonIterator value="xs:string(")"/>
1690+ </FnConcatIterator>
1691+ </EnclosedIterator>
1692+ </ElementIterator>
1693+ </FnConcatIterator>
1694 </ReturnClause>
1695 </flwor::FLWORIterator>
1696 </SequentialIterator>
1697
1698=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/idx5.iter'
1699--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/idx5.iter 2012-05-03 12:31:51 +0000
1700+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/idx5.iter 2012-06-14 14:31:26 +0000
1701@@ -19,98 +19,94 @@
1702 <SingletonIterator value="xs:QName(,,tests)"/>
1703 </ElementIterator>
1704 </CtxVarDeclareIterator>
1705- <flwor::FLWORIterator>
1706- <LetVariable name="$$opt_temp_1" materialize="true">
1707- <HoistIterator>
1708- <flwor::FLWORIterator>
1709- <ForVariable name="$$dot">
1710- <CtxVarIterator varid="2" varname="tests" varkind="global"/>
1711- </ForVariable>
1712- <WhereClause>
1713- <FnBooleanIterator>
1714- <AttributeAxisIterator test kind="match_name_test" qname="xs:QName(,,name)" typename="*" nill allowed="0">
1715- <TreatIterator type="[NodeXQType anyNode content=[XQType ANY_TYPE_KIND*]]" quant="*">
1716- <ForVarIterator varname="$$dot"/>
1717- </TreatIterator>
1718- </AttributeAxisIterator>
1719- </FnBooleanIterator>
1720- </WhereClause>
1721- <ReturnClause>
1722- <ForVarIterator varname="$$dot"/>
1723- </ReturnClause>
1724- </flwor::FLWORIterator>
1725- </HoistIterator>
1726- </LetVariable>
1727- <ReturnClause>
1728- <SequentialIterator>
1729- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1730+ <SequentialIterator>
1731+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1732+ <flwor::FLWORIterator>
1733+ <ForVariable name="$$opt_temp_2">
1734+ <CtxVarIterator varid="2" varname="tests" varkind="global"/>
1735+ </ForVariable>
1736+ <ReturnClause>
1737+ <ValueIndexEntryBuilderIterator>
1738+ <ForVarIterator varname="$$opt_temp_2"/>
1739+ <CastIterator type="xs:string">
1740+ <PromoteIterator type="xs:anyAtomicType">
1741+ <FnDataIterator>
1742+ <ChildAxisIterator test kind="match_text_test" qname="*" typename="*" nill allowed="0">
1743+ <TreatIterator type="[NodeXQType anyNode content=[XQType ANY_TYPE_KIND*]]" quant="*">
1744+ <ForVarIterator varname="$$opt_temp_2"/>
1745+ </TreatIterator>
1746+ </ChildAxisIterator>
1747+ </FnDataIterator>
1748+ </PromoteIterator>
1749+ </CastIterator>
1750+ </ValueIndexEntryBuilderIterator>
1751+ </ReturnClause>
1752+ </flwor::FLWORIterator>
1753+ </CreateInternalIndexIterator>
1754+ <flwor::FLWORIterator>
1755+ <LetVariable name="$$opt_temp_1" materialize="true">
1756+ <HoistIterator>
1757 <flwor::FLWORIterator>
1758- <ForVariable name="$$opt_temp_2">
1759+ <ForVariable name="$$dot">
1760 <CtxVarIterator varid="2" varname="tests" varkind="global"/>
1761 </ForVariable>
1762+ <WhereClause>
1763+ <FnBooleanIterator>
1764+ <AttributeAxisIterator test kind="match_name_test" qname="xs:QName(,,name)" typename="*" nill allowed="0">
1765+ <TreatIterator type="[NodeXQType anyNode content=[XQType ANY_TYPE_KIND*]]" quant="*">
1766+ <ForVarIterator varname="$$dot"/>
1767+ </TreatIterator>
1768+ </AttributeAxisIterator>
1769+ </FnBooleanIterator>
1770+ </WhereClause>
1771 <ReturnClause>
1772- <ValueIndexEntryBuilderIterator>
1773- <ForVarIterator varname="$$opt_temp_2"/>
1774- <CastIterator type="xs:string">
1775- <PromoteIterator type="xs:anyAtomicType">
1776- <FnDataIterator>
1777- <ChildAxisIterator test kind="match_text_test" qname="*" typename="*" nill allowed="0">
1778- <TreatIterator type="[NodeXQType anyNode content=[XQType ANY_TYPE_KIND*]]" quant="*">
1779- <ForVarIterator varname="$$opt_temp_2"/>
1780- </TreatIterator>
1781- </ChildAxisIterator>
1782- </FnDataIterator>
1783- </PromoteIterator>
1784- </CastIterator>
1785- </ValueIndexEntryBuilderIterator>
1786+ <ForVarIterator varname="$$dot"/>
1787 </ReturnClause>
1788 </flwor::FLWORIterator>
1789- </CreateInternalIndexIterator>
1790+ </HoistIterator>
1791+ </LetVariable>
1792+ <ForVariable name="test">
1793+ <CtxVarIterator varid="2" varname="tests" varkind="global"/>
1794+ </ForVariable>
1795+ <LetVariable name="$$opt_temp_0" materialize="true">
1796+ <HoistIterator>
1797+ <CastIterator type="xs:string">
1798+ <PromoteIterator type="xs:anyAtomicType">
1799+ <FnDataIterator>
1800+ <ChildAxisIterator test kind="match_text_test" qname="*" typename="*" nill allowed="0">
1801+ <TreatIterator type="[NodeXQType anyNode content=[XQType ANY_TYPE_KIND*]]" quant="*">
1802+ <ForVarIterator varname="test"/>
1803+ </TreatIterator>
1804+ </ChildAxisIterator>
1805+ </FnDataIterator>
1806+ </PromoteIterator>
1807+ </CastIterator>
1808+ </HoistIterator>
1809+ </LetVariable>
1810+ <LetVariable name="test_old" materialize="true">
1811 <flwor::FLWORIterator>
1812- <ForVariable name="test">
1813- <CtxVarIterator varid="2" varname="tests" varkind="global"/>
1814+ <ForVariable name="$$dot">
1815+ <ProbeIndexPointValueIterator>
1816+ <SingletonIterator value="xs:QName(,,tempIndex0)"/>
1817+ <UnhoistIterator>
1818+ <LetVarIterator varname="$$opt_temp_0"/>
1819+ </UnhoistIterator>
1820+ </ProbeIndexPointValueIterator>
1821 </ForVariable>
1822- <LetVariable name="$$opt_temp_0" materialize="true">
1823- <HoistIterator>
1824- <CastIterator type="xs:string">
1825- <PromoteIterator type="xs:anyAtomicType">
1826- <FnDataIterator>
1827- <ChildAxisIterator test kind="match_text_test" qname="*" typename="*" nill allowed="0">
1828- <TreatIterator type="[NodeXQType anyNode content=[XQType ANY_TYPE_KIND*]]" quant="*">
1829- <ForVarIterator varname="test"/>
1830- </TreatIterator>
1831- </ChildAxisIterator>
1832- </FnDataIterator>
1833- </PromoteIterator>
1834- </CastIterator>
1835- </HoistIterator>
1836- </LetVariable>
1837- <LetVariable name="test_old" materialize="true">
1838- <flwor::FLWORIterator>
1839- <ForVariable name="$$dot">
1840- <ProbeIndexPointValueIterator>
1841- <SingletonIterator value="xs:QName(,,tempIndex0)"/>
1842- <UnhoistIterator>
1843- <LetVarIterator varname="$$opt_temp_0"/>
1844- </UnhoistIterator>
1845- </ProbeIndexPointValueIterator>
1846- </ForVariable>
1847- <ReturnClause>
1848- <ForVarIterator varname="$$dot"/>
1849- </ReturnClause>
1850- </flwor::FLWORIterator>
1851- </LetVariable>
1852- <LetVariable name="qt_old" materialize="true">
1853- <UnhoistIterator>
1854- <LetVarIterator varname="$$opt_temp_1"/>
1855- </UnhoistIterator>
1856- </LetVariable>
1857 <ReturnClause>
1858- <SingletonIterator value="xs:integer(1)"/>
1859+ <ForVarIterator varname="$$dot"/>
1860 </ReturnClause>
1861 </flwor::FLWORIterator>
1862- </SequentialIterator>
1863- </ReturnClause>
1864- </flwor::FLWORIterator>
1865+ </LetVariable>
1866+ <LetVariable name="qt_old" materialize="true">
1867+ <UnhoistIterator>
1868+ <LetVarIterator varname="$$opt_temp_1"/>
1869+ </UnhoistIterator>
1870+ </LetVariable>
1871+ <ReturnClause>
1872+ <SingletonIterator value="xs:integer(1)"/>
1873+ </ReturnClause>
1874+ </flwor::FLWORIterator>
1875+ </SequentialIterator>
1876 </SequentialIterator>
1877
1878
1879=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/misc/hoist4.iter'
1880--- test/rbkt/ExpCompilerResults/IterPlan/zorba/misc/hoist4.iter 2012-05-03 12:31:51 +0000
1881+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/misc/hoist4.iter 2012-06-14 14:31:26 +0000
1882@@ -83,27 +83,23 @@
1883 </GenericArithIterator_AddOperation>
1884 </HoistIterator>
1885 </LetVariable>
1886+ <ForVariable name="c">
1887+ <OpToIterator>
1888+ <SingletonIterator value="xs:integer(1)"/>
1889+ <PromoteIterator type="xs:integer">
1890+ <FnDataIterator>
1891+ <CtxVarIterator varid="2" varname="x" varkind="local"/>
1892+ </FnDataIterator>
1893+ </PromoteIterator>
1894+ </OpToIterator>
1895+ </ForVariable>
1896 <ReturnClause>
1897- <flwor::FLWORIterator>
1898- <ForVariable name="c">
1899- <OpToIterator>
1900- <SingletonIterator value="xs:integer(1)"/>
1901- <PromoteIterator type="xs:integer">
1902- <FnDataIterator>
1903- <CtxVarIterator varid="2" varname="x" varkind="local"/>
1904- </FnDataIterator>
1905- </PromoteIterator>
1906- </OpToIterator>
1907- </ForVariable>
1908- <ReturnClause>
1909- <GenericArithIterator_AddOperation>
1910- <UnhoistIterator>
1911- <LetVarIterator varname="$$opt_temp_0"/>
1912- </UnhoistIterator>
1913- <ForVarIterator varname="c"/>
1914- </GenericArithIterator_AddOperation>
1915- </ReturnClause>
1916- </flwor::FLWORIterator>
1917+ <GenericArithIterator_AddOperation>
1918+ <UnhoistIterator>
1919+ <LetVarIterator varname="$$opt_temp_0"/>
1920+ </UnhoistIterator>
1921+ <ForVarIterator varname="c"/>
1922+ </GenericArithIterator_AddOperation>
1923 </ReturnClause>
1924 </flwor::FLWORIterator>
1925 </SequentialIterator>
1926
1927=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9198.iter'
1928--- test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9198.iter 2012-05-03 12:31:51 +0000
1929+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9198.iter 2012-06-14 14:31:26 +0000
1930@@ -1,33 +1,33 @@
1931 Iterator tree for main query:
1932-<flwor::FLWORIterator>
1933- <LetVariable name="$$opt_temp_0" materialize="true">
1934- <HoistIterator>
1935- <OpToIterator>
1936- <SingletonIterator value="xs:integer(1)"/>
1937- <SingletonIterator value="xs:integer(2)"/>
1938- </OpToIterator>
1939- </HoistIterator>
1940- </LetVariable>
1941- <ReturnClause>
1942- <SequentialIterator>
1943- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1944- <flwor::FLWORIterator>
1945- <ForVariable name="$$opt_temp_2">
1946- <UnhoistIterator>
1947- <LetVarIterator varname="$$opt_temp_0"/>
1948- </UnhoistIterator>
1949- </ForVariable>
1950- <ReturnClause>
1951- <ValueIndexEntryBuilderIterator>
1952- <ForVarIterator varname="$$opt_temp_2"/>
1953- <ForVarIterator varname="$$opt_temp_2"/>
1954- </ValueIndexEntryBuilderIterator>
1955- </ReturnClause>
1956- </flwor::FLWORIterator>
1957- </CreateInternalIndexIterator>
1958- <ElementIterator copyInputNodes="false">
1959- <SingletonIterator value="xs:QName(,,karteikasten)"/>
1960- <EnclosedIterator attr_cont="false">
1961+<ElementIterator copyInputNodes="false">
1962+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
1963+ <EnclosedIterator attr_cont="false">
1964+ <flwor::FLWORIterator>
1965+ <LetVariable name="$$opt_temp_0" materialize="true">
1966+ <HoistIterator>
1967+ <OpToIterator>
1968+ <SingletonIterator value="xs:integer(1)"/>
1969+ <SingletonIterator value="xs:integer(2)"/>
1970+ </OpToIterator>
1971+ </HoistIterator>
1972+ </LetVariable>
1973+ <ReturnClause>
1974+ <SequentialIterator>
1975+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
1976+ <flwor::FLWORIterator>
1977+ <ForVariable name="$$opt_temp_2">
1978+ <UnhoistIterator>
1979+ <LetVarIterator varname="$$opt_temp_0"/>
1980+ </UnhoistIterator>
1981+ </ForVariable>
1982+ <ReturnClause>
1983+ <ValueIndexEntryBuilderIterator>
1984+ <ForVarIterator varname="$$opt_temp_2"/>
1985+ <ForVarIterator varname="$$opt_temp_2"/>
1986+ </ValueIndexEntryBuilderIterator>
1987+ </ReturnClause>
1988+ </flwor::FLWORIterator>
1989+ </CreateInternalIndexIterator>
1990 <flwor::FLWORIterator>
1991 <ForVariable name="book">
1992 <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
1993@@ -67,9 +67,9 @@
1994 </ElementIterator>
1995 </ReturnClause>
1996 </flwor::FLWORIterator>
1997- </EnclosedIterator>
1998- </ElementIterator>
1999- </SequentialIterator>
2000- </ReturnClause>
2001-</flwor::FLWORIterator>
2002+ </SequentialIterator>
2003+ </ReturnClause>
2004+ </flwor::FLWORIterator>
2005+ </EnclosedIterator>
2006+</ElementIterator>
2007
2008
2009=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9199.iter'
2010--- test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9199.iter 2012-05-03 12:31:51 +0000
2011+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9199.iter 2012-06-14 14:31:26 +0000
2012@@ -1,33 +1,33 @@
2013 Iterator tree for main query:
2014-<flwor::FLWORIterator>
2015- <LetVariable name="$$opt_temp_0" materialize="true">
2016- <HoistIterator>
2017- <OpToIterator>
2018- <SingletonIterator value="xs:integer(1)"/>
2019- <SingletonIterator value="xs:integer(2)"/>
2020- </OpToIterator>
2021- </HoistIterator>
2022- </LetVariable>
2023- <ReturnClause>
2024- <SequentialIterator>
2025- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
2026- <flwor::FLWORIterator>
2027- <ForVariable name="$$opt_temp_2">
2028- <UnhoistIterator>
2029- <LetVarIterator varname="$$opt_temp_0"/>
2030- </UnhoistIterator>
2031- </ForVariable>
2032- <ReturnClause>
2033- <ValueIndexEntryBuilderIterator>
2034- <ForVarIterator varname="$$opt_temp_2"/>
2035- <ForVarIterator varname="$$opt_temp_2"/>
2036- </ValueIndexEntryBuilderIterator>
2037- </ReturnClause>
2038- </flwor::FLWORIterator>
2039- </CreateInternalIndexIterator>
2040- <ElementIterator copyInputNodes="false">
2041- <SingletonIterator value="xs:QName(,,karteikasten)"/>
2042- <EnclosedIterator attr_cont="false">
2043+<ElementIterator copyInputNodes="false">
2044+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
2045+ <EnclosedIterator attr_cont="false">
2046+ <flwor::FLWORIterator>
2047+ <LetVariable name="$$opt_temp_0" materialize="true">
2048+ <HoistIterator>
2049+ <OpToIterator>
2050+ <SingletonIterator value="xs:integer(1)"/>
2051+ <SingletonIterator value="xs:integer(2)"/>
2052+ </OpToIterator>
2053+ </HoistIterator>
2054+ </LetVariable>
2055+ <ReturnClause>
2056+ <SequentialIterator>
2057+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
2058+ <flwor::FLWORIterator>
2059+ <ForVariable name="$$opt_temp_2">
2060+ <UnhoistIterator>
2061+ <LetVarIterator varname="$$opt_temp_0"/>
2062+ </UnhoistIterator>
2063+ </ForVariable>
2064+ <ReturnClause>
2065+ <ValueIndexEntryBuilderIterator>
2066+ <ForVarIterator varname="$$opt_temp_2"/>
2067+ <ForVarIterator varname="$$opt_temp_2"/>
2068+ </ValueIndexEntryBuilderIterator>
2069+ </ReturnClause>
2070+ </flwor::FLWORIterator>
2071+ </CreateInternalIndexIterator>
2072 <flwor::FLWORIterator>
2073 <ForVariable name="book">
2074 <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
2075@@ -67,9 +67,9 @@
2076 </ElementIterator>
2077 </ReturnClause>
2078 </flwor::FLWORIterator>
2079- </EnclosedIterator>
2080- </ElementIterator>
2081- </SequentialIterator>
2082- </ReturnClause>
2083-</flwor::FLWORIterator>
2084+ </SequentialIterator>
2085+ </ReturnClause>
2086+ </flwor::FLWORIterator>
2087+ </EnclosedIterator>
2088+</ElementIterator>
2089
2090
2091=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9212.iter'
2092--- test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9212.iter 2012-05-03 12:31:51 +0000
2093+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9212.iter 2012-06-14 14:31:26 +0000
2094@@ -1,38 +1,38 @@
2095 Iterator tree for main query:
2096-<flwor::FLWORIterator>
2097- <LetVariable name="$$opt_temp_0" materialize="true">
2098- <HoistIterator>
2099- <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
2100- <FnDocIterator>
2101- <SingletonIterator value="xs:string(books.xml)"/>
2102- </FnDocIterator>
2103- </DescendantAxisIterator>
2104- </HoistIterator>
2105- </LetVariable>
2106- <ReturnClause>
2107- <SequentialIterator>
2108- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
2109- <flwor::FLWORIterator>
2110- <ForVariable name="$$opt_temp_1">
2111- <UnhoistIterator>
2112- <LetVarIterator varname="$$opt_temp_0"/>
2113- </UnhoistIterator>
2114- </ForVariable>
2115- <ReturnClause>
2116- <ValueIndexEntryBuilderIterator>
2117- <ForVarIterator varname="$$opt_temp_1"/>
2118- <FnCountIterator>
2119- <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
2120+<ElementIterator copyInputNodes="false">
2121+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
2122+ <EnclosedIterator attr_cont="false">
2123+ <flwor::FLWORIterator>
2124+ <LetVariable name="$$opt_temp_0" materialize="true">
2125+ <HoistIterator>
2126+ <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
2127+ <FnDocIterator>
2128+ <SingletonIterator value="xs:string(books.xml)"/>
2129+ </FnDocIterator>
2130+ </DescendantAxisIterator>
2131+ </HoistIterator>
2132+ </LetVariable>
2133+ <ReturnClause>
2134+ <SequentialIterator>
2135+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
2136+ <flwor::FLWORIterator>
2137+ <ForVariable name="$$opt_temp_1">
2138+ <UnhoistIterator>
2139+ <LetVarIterator varname="$$opt_temp_0"/>
2140+ </UnhoistIterator>
2141+ </ForVariable>
2142+ <ReturnClause>
2143+ <ValueIndexEntryBuilderIterator>
2144 <ForVarIterator varname="$$opt_temp_1"/>
2145- </ChildAxisIterator>
2146- </FnCountIterator>
2147- </ValueIndexEntryBuilderIterator>
2148- </ReturnClause>
2149- </flwor::FLWORIterator>
2150- </CreateInternalIndexIterator>
2151- <ElementIterator copyInputNodes="false">
2152- <SingletonIterator value="xs:QName(,,karteikasten)"/>
2153- <EnclosedIterator attr_cont="false">
2154+ <FnCountIterator>
2155+ <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
2156+ <ForVarIterator varname="$$opt_temp_1"/>
2157+ </ChildAxisIterator>
2158+ </FnCountIterator>
2159+ </ValueIndexEntryBuilderIterator>
2160+ </ReturnClause>
2161+ </flwor::FLWORIterator>
2162+ </CreateInternalIndexIterator>
2163 <flwor::FLWORIterator>
2164 <ForVariable name="book">
2165 <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
2166@@ -75,9 +75,9 @@
2167 </ElementIterator>
2168 </ReturnClause>
2169 </flwor::FLWORIterator>
2170- </EnclosedIterator>
2171- </ElementIterator>
2172- </SequentialIterator>
2173- </ReturnClause>
2174-</flwor::FLWORIterator>
2175+ </SequentialIterator>
2176+ </ReturnClause>
2177+ </flwor::FLWORIterator>
2178+ </EnclosedIterator>
2179+</ElementIterator>
2180
2181
2182=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9389.iter'
2183--- test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9389.iter 2012-05-03 12:31:51 +0000
2184+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9389.iter 2012-06-14 14:31:26 +0000
2185@@ -1,38 +1,38 @@
2186 Iterator tree for main query:
2187-<flwor::FLWORIterator>
2188- <LetVariable name="$$opt_temp_0" materialize="true">
2189- <HoistIterator>
2190- <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
2191- <FnDocIterator>
2192- <SingletonIterator value="xs:string(books.xml)"/>
2193- </FnDocIterator>
2194- </DescendantAxisIterator>
2195- </HoistIterator>
2196- </LetVariable>
2197- <ReturnClause>
2198- <SequentialIterator>
2199- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
2200- <flwor::FLWORIterator>
2201- <ForVariable name="$$opt_temp_1">
2202- <UnhoistIterator>
2203- <LetVarIterator varname="$$opt_temp_0"/>
2204- </UnhoistIterator>
2205- </ForVariable>
2206- <ReturnClause>
2207- <ValueIndexEntryBuilderIterator>
2208- <ForVarIterator varname="$$opt_temp_1"/>
2209- <FnCountIterator>
2210- <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
2211+<ElementIterator copyInputNodes="false">
2212+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
2213+ <EnclosedIterator attr_cont="false">
2214+ <flwor::FLWORIterator>
2215+ <LetVariable name="$$opt_temp_0" materialize="true">
2216+ <HoistIterator>
2217+ <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
2218+ <FnDocIterator>
2219+ <SingletonIterator value="xs:string(books.xml)"/>
2220+ </FnDocIterator>
2221+ </DescendantAxisIterator>
2222+ </HoistIterator>
2223+ </LetVariable>
2224+ <ReturnClause>
2225+ <SequentialIterator>
2226+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
2227+ <flwor::FLWORIterator>
2228+ <ForVariable name="$$opt_temp_1">
2229+ <UnhoistIterator>
2230+ <LetVarIterator varname="$$opt_temp_0"/>
2231+ </UnhoistIterator>
2232+ </ForVariable>
2233+ <ReturnClause>
2234+ <ValueIndexEntryBuilderIterator>
2235 <ForVarIterator varname="$$opt_temp_1"/>
2236- </ChildAxisIterator>
2237- </FnCountIterator>
2238- </ValueIndexEntryBuilderIterator>
2239- </ReturnClause>
2240- </flwor::FLWORIterator>
2241- </CreateInternalIndexIterator>
2242- <ElementIterator copyInputNodes="false">
2243- <SingletonIterator value="xs:QName(,,karteikasten)"/>
2244- <EnclosedIterator attr_cont="false">
2245+ <FnCountIterator>
2246+ <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
2247+ <ForVarIterator varname="$$opt_temp_1"/>
2248+ </ChildAxisIterator>
2249+ </FnCountIterator>
2250+ </ValueIndexEntryBuilderIterator>
2251+ </ReturnClause>
2252+ </flwor::FLWORIterator>
2253+ </CreateInternalIndexIterator>
2254 <flwor::FLWORIterator>
2255 <ForVariable name="anzahl">
2256 <OpToIterator>
2257@@ -62,9 +62,9 @@
2258 </ElementIterator>
2259 </ReturnClause>
2260 </flwor::FLWORIterator>
2261- </EnclosedIterator>
2262- </ElementIterator>
2263- </SequentialIterator>
2264- </ReturnClause>
2265-</flwor::FLWORIterator>
2266+ </SequentialIterator>
2267+ </ReturnClause>
2268+ </flwor::FLWORIterator>
2269+ </EnclosedIterator>
2270+</ElementIterator>
2271
2272
2273=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9392.iter'
2274--- test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9392.iter 2012-05-03 12:31:51 +0000
2275+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9392.iter 2012-06-14 14:31:26 +0000
2276@@ -1,45 +1,45 @@
2277 Iterator tree for main query:
2278-<flwor::FLWORIterator>
2279- <LetVariable name="$$opt_temp_0" materialize="true">
2280- <HoistIterator>
2281- <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
2282- <FnDocIterator>
2283- <SingletonIterator value="xs:string(books.xml)"/>
2284- </FnDocIterator>
2285- </DescendantAxisIterator>
2286- </HoistIterator>
2287- </LetVariable>
2288- <ReturnClause>
2289- <SequentialIterator>
2290- <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
2291- <flwor::FLWORIterator>
2292- <ForVariable name="$$opt_temp_1">
2293- <UnhoistIterator>
2294- <LetVarIterator varname="$$opt_temp_0"/>
2295- </UnhoistIterator>
2296- </ForVariable>
2297- <ReturnClause>
2298- <ValueIndexEntryBuilderIterator>
2299- <ForVarIterator varname="$$opt_temp_1"/>
2300- <FnCountIterator>
2301- <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
2302- <ForVarIterator varname="$$opt_temp_1"/>
2303- </ChildAxisIterator>
2304- </FnCountIterator>
2305- </ValueIndexEntryBuilderIterator>
2306- </ReturnClause>
2307- </flwor::FLWORIterator>
2308- </CreateInternalIndexIterator>
2309- <ElementIterator copyInputNodes="false">
2310- <SingletonIterator value="xs:QName(,,karteikasten)"/>
2311- <EnclosedIterator attr_cont="false">
2312- <ElementIterator copyInputNodes="false">
2313- <SingletonIterator value="xs:QName(,,gruppe)"/>
2314- <AttributeIterator qname="xs:QName(,,anzahl)">
2315- <FnDataIterator>
2316- <FnConcatIterator>
2317- <SingletonIterator value="xs:string( )"/>
2318- <EnclosedIterator attr_cont="true">
2319+<ElementIterator copyInputNodes="false">
2320+ <SingletonIterator value="xs:QName(,,karteikasten)"/>
2321+ <EnclosedIterator attr_cont="false">
2322+ <ElementIterator copyInputNodes="false">
2323+ <SingletonIterator value="xs:QName(,,gruppe)"/>
2324+ <AttributeIterator qname="xs:QName(,,anzahl)">
2325+ <FnDataIterator>
2326+ <FnConcatIterator>
2327+ <SingletonIterator value="xs:string( )"/>
2328+ <EnclosedIterator attr_cont="true">
2329+ <flwor::FLWORIterator>
2330+ <LetVariable name="$$opt_temp_0" materialize="true">
2331+ <HoistIterator>
2332+ <DescendantAxisIterator test kind="match_name_test" qname="xs:QName(,,book)" typename="*" nill allowed="0">
2333+ <FnDocIterator>
2334+ <SingletonIterator value="xs:string(books.xml)"/>
2335+ </FnDocIterator>
2336+ </DescendantAxisIterator>
2337+ </HoistIterator>
2338+ </LetVariable>
2339+ <ReturnClause>
2340+ <SequentialIterator>
2341+ <CreateInternalIndexIterator name="xs:QName(,,tempIndex0)">
2342+ <flwor::FLWORIterator>
2343+ <ForVariable name="$$opt_temp_1">
2344+ <UnhoistIterator>
2345+ <LetVarIterator varname="$$opt_temp_0"/>
2346+ </UnhoistIterator>
2347+ </ForVariable>
2348+ <ReturnClause>
2349+ <ValueIndexEntryBuilderIterator>
2350+ <ForVarIterator varname="$$opt_temp_1"/>
2351+ <FnCountIterator>
2352+ <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
2353+ <ForVarIterator varname="$$opt_temp_1"/>
2354+ </ChildAxisIterator>
2355+ </FnCountIterator>
2356+ </ValueIndexEntryBuilderIterator>
2357+ </ReturnClause>
2358+ </flwor::FLWORIterator>
2359+ </CreateInternalIndexIterator>
2360 <flwor::FLWORIterator>
2361 <ForVariable name="anzahl">
2362 <OpToIterator>
2363@@ -57,15 +57,15 @@
2364 <ForVarIterator varname="anzahl"/>
2365 </ReturnClause>
2366 </flwor::FLWORIterator>
2367- </EnclosedIterator>
2368- </FnConcatIterator>
2369- </FnDataIterator>
2370- </AttributeIterator>
2371- <FnConcatIterator/>
2372- </ElementIterator>
2373- </EnclosedIterator>
2374- </ElementIterator>
2375- </SequentialIterator>
2376- </ReturnClause>
2377-</flwor::FLWORIterator>
2378+ </SequentialIterator>
2379+ </ReturnClause>
2380+ </flwor::FLWORIterator>
2381+ </EnclosedIterator>
2382+ </FnConcatIterator>
2383+ </FnDataIterator>
2384+ </AttributeIterator>
2385+ <FnConcatIterator/>
2386+ </ElementIterator>
2387+ </EnclosedIterator>
2388+</ElementIterator>
2389
2390
2391=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-idx4.iter'
2392--- test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-idx4.iter 2012-05-03 12:31:51 +0000
2393+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-idx4.iter 2012-06-14 14:31:26 +0000
2394@@ -76,89 +76,85 @@
2395 </TreatIterator>
2396 </HoistIterator>
2397 </LetVariable>
2398+ <ForVariable name="prefix">
2399+ <flwor::FLWORIterator>
2400+ <ForVariable name="prefixE">
2401+ <InScopePrefixesIterator>
2402+ <TreatIterator quant="">
2403+ <LetVarIterator varname="e"/>
2404+ </TreatIterator>
2405+ </InScopePrefixesIterator>
2406+ </ForVariable>
2407+ <LetVariable name="$$opt_temp_1" materialize="true">
2408+ <HoistIterator>
2409+ <NamespaceUriForPrefixIterator>
2410+ <ForVarIterator varname="prefixE"/>
2411+ <UnhoistIterator>
2412+ <LetVarIterator varname="$$opt_temp_0"/>
2413+ </UnhoistIterator>
2414+ </NamespaceUriForPrefixIterator>
2415+ </HoistIterator>
2416+ </LetVariable>
2417+ <ForVariable name="prefixP">
2418+ <ProbeIndexPointValueIterator>
2419+ <SingletonIterator value="xs:QName(,,tempIndex0)"/>
2420+ <ForVarIterator varname="prefixE"/>
2421+ </ProbeIndexPointValueIterator>
2422+ </ForVariable>
2423+ <WhereClause>
2424+ <FnBooleanIterator>
2425+ <CompareIterator>
2426+ <UnhoistIterator>
2427+ <LetVarIterator varname="$$opt_temp_1"/>
2428+ </UnhoistIterator>
2429+ <NamespaceUriForPrefixIterator>
2430+ <ForVarIterator varname="prefixP"/>
2431+ <UnhoistIterator>
2432+ <ForVarIterator varname="$$opt_temp_2"/>
2433+ </UnhoistIterator>
2434+ </NamespaceUriForPrefixIterator>
2435+ </CompareIterator>
2436+ </FnBooleanIterator>
2437+ </WhereClause>
2438+ <ReturnClause>
2439+ <ForVarIterator varname="prefixE"/>
2440+ </ReturnClause>
2441+ </flwor::FLWORIterator>
2442+ </ForVariable>
2443 <ReturnClause>
2444- <flwor::FLWORIterator>
2445- <ForVariable name="prefix">
2446- <flwor::FLWORIterator>
2447- <ForVariable name="prefixE">
2448- <InScopePrefixesIterator>
2449- <TreatIterator quant="">
2450- <LetVarIterator varname="e"/>
2451- </TreatIterator>
2452- </InScopePrefixesIterator>
2453- </ForVariable>
2454- <LetVariable name="$$opt_temp_1" materialize="true">
2455- <HoistIterator>
2456- <NamespaceUriForPrefixIterator>
2457- <ForVarIterator varname="prefixE"/>
2458- <UnhoistIterator>
2459- <LetVarIterator varname="$$opt_temp_0"/>
2460- </UnhoistIterator>
2461- </NamespaceUriForPrefixIterator>
2462- </HoistIterator>
2463- </LetVariable>
2464- <ForVariable name="prefixP">
2465- <ProbeIndexPointValueIterator>
2466- <SingletonIterator value="xs:QName(,,tempIndex0)"/>
2467- <ForVarIterator varname="prefixE"/>
2468- </ProbeIndexPointValueIterator>
2469- </ForVariable>
2470- <WhereClause>
2471- <FnBooleanIterator>
2472- <CompareIterator>
2473- <UnhoistIterator>
2474- <LetVarIterator varname="$$opt_temp_1"/>
2475- </UnhoistIterator>
2476+ <FnConcatIterator>
2477+ <SingletonIterator value="xs:string( )"/>
2478+ <ElementIterator copyInputNodes="false">
2479+ <SingletonIterator value="xs:QName(,,span)"/>
2480+ <AttributeIterator qname="xs:QName(,,class)">
2481+ <SingletonIterator value="xs:string(ns)"/>
2482+ </AttributeIterator>
2483+ <EnclosedIterator attr_cont="false">
2484+ <FnConcatIterator>
2485+ <ConcatStrIterator>
2486+ <SingletonIterator value="xs:string(xmlns:)"/>
2487+ <ForVarIterator varname="prefix"/>
2488+ <SingletonIterator value="xs:string(=")"/>
2489+ </ConcatStrIterator>
2490+ <ElementIterator copyInputNodes="false">
2491+ <SingletonIterator value="xs:QName(,,span)"/>
2492+ <AttributeIterator qname="xs:QName(,,class)">
2493+ <SingletonIterator value="xs:string(nsUri)"/>
2494+ </AttributeIterator>
2495+ <EnclosedIterator attr_cont="false">
2496 <NamespaceUriForPrefixIterator>
2497- <ForVarIterator varname="prefixP"/>
2498+ <ForVarIterator varname="prefix"/>
2499 <UnhoistIterator>
2500- <ForVarIterator varname="$$opt_temp_2"/>
2501+ <ForVarIterator varname="$$opt_temp_3"/>
2502 </UnhoistIterator>
2503 </NamespaceUriForPrefixIterator>
2504- </CompareIterator>
2505- </FnBooleanIterator>
2506- </WhereClause>
2507- <ReturnClause>
2508- <ForVarIterator varname="prefixE"/>
2509- </ReturnClause>
2510- </flwor::FLWORIterator>
2511- </ForVariable>
2512- <ReturnClause>
2513- <FnConcatIterator>
2514- <SingletonIterator value="xs:string( )"/>
2515- <ElementIterator copyInputNodes="false">
2516- <SingletonIterator value="xs:QName(,,span)"/>
2517- <AttributeIterator qname="xs:QName(,,class)">
2518- <SingletonIterator value="xs:string(ns)"/>
2519- </AttributeIterator>
2520- <EnclosedIterator attr_cont="false">
2521- <FnConcatIterator>
2522- <ConcatStrIterator>
2523- <SingletonIterator value="xs:string(xmlns:)"/>
2524- <ForVarIterator varname="prefix"/>
2525- <SingletonIterator value="xs:string(=")"/>
2526- </ConcatStrIterator>
2527- <ElementIterator copyInputNodes="false">
2528- <SingletonIterator value="xs:QName(,,span)"/>
2529- <AttributeIterator qname="xs:QName(,,class)">
2530- <SingletonIterator value="xs:string(nsUri)"/>
2531- </AttributeIterator>
2532- <EnclosedIterator attr_cont="false">
2533- <NamespaceUriForPrefixIterator>
2534- <ForVarIterator varname="prefix"/>
2535- <UnhoistIterator>
2536- <ForVarIterator varname="$$opt_temp_3"/>
2537- </UnhoistIterator>
2538- </NamespaceUriForPrefixIterator>
2539- </EnclosedIterator>
2540- </ElementIterator>
2541- <SingletonIterator value="xs:string(")"/>
2542- </FnConcatIterator>
2543- </EnclosedIterator>
2544- </ElementIterator>
2545- </FnConcatIterator>
2546- </ReturnClause>
2547- </flwor::FLWORIterator>
2548+ </EnclosedIterator>
2549+ </ElementIterator>
2550+ <SingletonIterator value="xs:string(")"/>
2551+ </FnConcatIterator>
2552+ </EnclosedIterator>
2553+ </ElementIterator>
2554+ </FnConcatIterator>
2555 </ReturnClause>
2556 </flwor::FLWORIterator>
2557 </SequentialIterator>
2558
2559=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/xray/ppm_10.iter'
2560--- test/rbkt/ExpCompilerResults/IterPlan/zorba/xray/ppm_10.iter 2012-05-03 12:31:51 +0000
2561+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/xray/ppm_10.iter 2012-06-14 14:31:26 +0000
2562@@ -354,124 +354,120 @@
2563 </TreatIterator>
2564 </UDFunctionCallIterator>
2565 </CtxVarDeclareIterator>
2566- <flwor::FLWORIterator>
2567- <LetVariable name="$$opt_temp_0" materialize="true">
2568- <HoistIterator>
2569- <OpToIterator>
2570- <SingletonIterator value="xs:integer(1)"/>
2571- <CtxVarIterator varid="2" varname="width" varkind="global"/>
2572- </OpToIterator>
2573- </HoistIterator>
2574- </LetVariable>
2575- <LetVariable name="$$opt_temp_1" materialize="true">
2576- <HoistIterator>
2577- <TreatIterator type="[NodeXQType elementNode content=[XQType ANY_TYPE_KIND*]]" quant="">
2578- <CtxVarIterator varid="4" varname="scene" varkind="global"/>
2579- </TreatIterator>
2580- </HoistIterator>
2581- </LetVariable>
2582- <ReturnClause>
2583+ <FnConcatIterator>
2584+ <StringJoinIterator>
2585 <FnConcatIterator>
2586+ <SingletonIterator value="xs:string(P3)"/>
2587 <StringJoinIterator>
2588 <FnConcatIterator>
2589- <SingletonIterator value="xs:string(P3)"/>
2590+ <FnStringIterator>
2591+ <CtxVarIterator varid="2" varname="width" varkind="global"/>
2592+ </FnStringIterator>
2593+ <FnStringIterator>
2594+ <CtxVarIterator varid="3" varname="height" varkind="global"/>
2595+ </FnStringIterator>
2596+ </FnConcatIterator>
2597+ <SingletonIterator value="xs:string( )"/>
2598+ </StringJoinIterator>
2599+ <SingletonIterator value="xs:string(255)"/>
2600+ <flwor::FLWORIterator>
2601+ <LetVariable name="$$opt_temp_1" materialize="true">
2602+ <HoistIterator>
2603+ <TreatIterator type="[NodeXQType elementNode content=[XQType ANY_TYPE_KIND*]]" quant="">
2604+ <CtxVarIterator varid="4" varname="scene" varkind="global"/>
2605+ </TreatIterator>
2606+ </HoistIterator>
2607+ </LetVariable>
2608+ <LetVariable name="$$opt_temp_0" materialize="true">
2609+ <HoistIterator>
2610+ <OpToIterator>
2611+ <SingletonIterator value="xs:integer(1)"/>
2612+ <CtxVarIterator varid="2" varname="width" varkind="global"/>
2613+ </OpToIterator>
2614+ </HoistIterator>
2615+ </LetVariable>
2616+ <ForVariable name="aspect-ratio">
2617+ <SpecificNumArithIterator_DivideOperation_DECIMAL>
2618+ <CtxVarIterator varid="2" varname="width" varkind="global"/>
2619+ <CtxVarIterator varid="3" varname="height" varkind="global"/>
2620+ </SpecificNumArithIterator_DivideOperation_DECIMAL>
2621+ </ForVariable>
2622+ <ForVariable name="y">
2623+ <OpToIterator>
2624+ <SingletonIterator value="xs:integer(1)"/>
2625+ <CtxVarIterator varid="3" varname="height" varkind="global"/>
2626+ </OpToIterator>
2627+ </ForVariable>
2628+ <ForVariable name="y-recentered">
2629+ <SpecificNumArithIterator_AddOperation_DECIMAL>
2630+ <SpecificNumArithIterator_DivideOperation_DECIMAL>
2631+ <OpNumericUnaryIterator>
2632+ <ForVarIterator varname="y"/>
2633+ </OpNumericUnaryIterator>
2634+ <CtxVarIterator varid="3" varname="height" varkind="global"/>
2635+ </SpecificNumArithIterator_DivideOperation_DECIMAL>
2636+ <SingletonIterator value="xs:decimal(0.5)"/>
2637+ </SpecificNumArithIterator_AddOperation_DECIMAL>
2638+ </ForVariable>
2639+ <LetVariable name="$$opt_temp_2" materialize="true">
2640+ <HoistIterator>
2641+ <PromoteIterator type="xs:double">
2642+ <ForVarIterator varname="y-recentered"/>
2643+ </PromoteIterator>
2644+ </HoistIterator>
2645+ </LetVariable>
2646+ <ForVariable name="x">
2647+ <UnhoistIterator>
2648+ <LetVarIterator varname="$$opt_temp_0"/>
2649+ </UnhoistIterator>
2650+ </ForVariable>
2651+ <ReturnClause>
2652 <StringJoinIterator>
2653- <FnConcatIterator>
2654- <FnStringIterator>
2655- <CtxVarIterator varid="2" varname="width" varkind="global"/>
2656- </FnStringIterator>
2657- <FnStringIterator>
2658- <CtxVarIterator varid="3" varname="height" varkind="global"/>
2659- </FnStringIterator>
2660- </FnConcatIterator>
2661+ <flwor::FLWORIterator>
2662+ <ForVariable name="channel">
2663+ <UDFunctionCallIterator>
2664+ <UnhoistIterator>
2665+ <LetVarIterator varname="$$opt_temp_1"/>
2666+ </UnhoistIterator>
2667+ <PromoteIterator type="xs:double">
2668+ <SpecificNumArithIterator_MultiplyOperation_DECIMAL>
2669+ <SpecificNumArithIterator_SubtractOperation_DECIMAL>
2670+ <SpecificNumArithIterator_DivideOperation_DECIMAL>
2671+ <ForVarIterator varname="x"/>
2672+ <CtxVarIterator varid="2" varname="width" varkind="global"/>
2673+ </SpecificNumArithIterator_DivideOperation_DECIMAL>
2674+ <SingletonIterator value="xs:decimal(0.5)"/>
2675+ </SpecificNumArithIterator_SubtractOperation_DECIMAL>
2676+ <ForVarIterator varname="aspect-ratio"/>
2677+ </SpecificNumArithIterator_MultiplyOperation_DECIMAL>
2678+ </PromoteIterator>
2679+ <UnhoistIterator>
2680+ <LetVarIterator varname="$$opt_temp_2"/>
2681+ </UnhoistIterator>
2682+ </UDFunctionCallIterator>
2683+ </ForVariable>
2684+ <ReturnClause>
2685+ <FnStringIterator>
2686+ <FloorIterator>
2687+ <SpecificNumArithIterator_MultiplyOperation_DOUBLE>
2688+ <ForVarIterator varname="channel"/>
2689+ <SingletonIterator value="xs:double(255)"/>
2690+ </SpecificNumArithIterator_MultiplyOperation_DOUBLE>
2691+ </FloorIterator>
2692+ </FnStringIterator>
2693+ </ReturnClause>
2694+ </flwor::FLWORIterator>
2695 <SingletonIterator value="xs:string( )"/>
2696 </StringJoinIterator>
2697- <SingletonIterator value="xs:string(255)"/>
2698- <flwor::FLWORIterator>
2699- <ForVariable name="aspect-ratio">
2700- <SpecificNumArithIterator_DivideOperation_DECIMAL>
2701- <CtxVarIterator varid="2" varname="width" varkind="global"/>
2702- <CtxVarIterator varid="3" varname="height" varkind="global"/>
2703- </SpecificNumArithIterator_DivideOperation_DECIMAL>
2704- </ForVariable>
2705- <ForVariable name="y">
2706- <OpToIterator>
2707- <SingletonIterator value="xs:integer(1)"/>
2708- <CtxVarIterator varid="3" varname="height" varkind="global"/>
2709- </OpToIterator>
2710- </ForVariable>
2711- <ForVariable name="y-recentered">
2712- <SpecificNumArithIterator_AddOperation_DECIMAL>
2713- <SpecificNumArithIterator_DivideOperation_DECIMAL>
2714- <OpNumericUnaryIterator>
2715- <ForVarIterator varname="y"/>
2716- </OpNumericUnaryIterator>
2717- <CtxVarIterator varid="3" varname="height" varkind="global"/>
2718- </SpecificNumArithIterator_DivideOperation_DECIMAL>
2719- <SingletonIterator value="xs:decimal(0.5)"/>
2720- </SpecificNumArithIterator_AddOperation_DECIMAL>
2721- </ForVariable>
2722- <LetVariable name="$$opt_temp_2" materialize="true">
2723- <HoistIterator>
2724- <PromoteIterator type="xs:double">
2725- <ForVarIterator varname="y-recentered"/>
2726- </PromoteIterator>
2727- </HoistIterator>
2728- </LetVariable>
2729- <ForVariable name="x">
2730- <UnhoistIterator>
2731- <LetVarIterator varname="$$opt_temp_0"/>
2732- </UnhoistIterator>
2733- </ForVariable>
2734- <ReturnClause>
2735- <StringJoinIterator>
2736- <flwor::FLWORIterator>
2737- <ForVariable name="channel">
2738- <UDFunctionCallIterator>
2739- <UnhoistIterator>
2740- <LetVarIterator varname="$$opt_temp_1"/>
2741- </UnhoistIterator>
2742- <PromoteIterator type="xs:double">
2743- <SpecificNumArithIterator_MultiplyOperation_DECIMAL>
2744- <SpecificNumArithIterator_SubtractOperation_DECIMAL>
2745- <SpecificNumArithIterator_DivideOperation_DECIMAL>
2746- <ForVarIterator varname="x"/>
2747- <CtxVarIterator varid="2" varname="width" varkind="global"/>
2748- </SpecificNumArithIterator_DivideOperation_DECIMAL>
2749- <SingletonIterator value="xs:decimal(0.5)"/>
2750- </SpecificNumArithIterator_SubtractOperation_DECIMAL>
2751- <ForVarIterator varname="aspect-ratio"/>
2752- </SpecificNumArithIterator_MultiplyOperation_DECIMAL>
2753- </PromoteIterator>
2754- <UnhoistIterator>
2755- <LetVarIterator varname="$$opt_temp_2"/>
2756- </UnhoistIterator>
2757- </UDFunctionCallIterator>
2758- </ForVariable>
2759- <ReturnClause>
2760- <FnStringIterator>
2761- <FloorIterator>
2762- <SpecificNumArithIterator_MultiplyOperation_DOUBLE>
2763- <ForVarIterator varname="channel"/>
2764- <SingletonIterator value="xs:double(255)"/>
2765- </SpecificNumArithIterator_MultiplyOperation_DOUBLE>
2766- </FloorIterator>
2767- </FnStringIterator>
2768- </ReturnClause>
2769- </flwor::FLWORIterator>
2770- <SingletonIterator value="xs:string( )"/>
2771- </StringJoinIterator>
2772- </ReturnClause>
2773- </flwor::FLWORIterator>
2774- </FnConcatIterator>
2775- <SingletonIterator value="xs:string(
2776-)"/>
2777- </StringJoinIterator>
2778- <SingletonIterator value="xs:string(
2779-)"/>
2780+ </ReturnClause>
2781+ </flwor::FLWORIterator>
2782 </FnConcatIterator>
2783- </ReturnClause>
2784- </flwor::FLWORIterator>
2785+ <SingletonIterator value="xs:string(
2786+)"/>
2787+ </StringJoinIterator>
2788+ <SingletonIterator value="xs:string(
2789+)"/>
2790+ </FnConcatIterator>
2791 </SequentialIterator>
2792
2793 Iterator tree for scene:prepare-scene:
2794
2795=== modified file 'test/rbkt/Queries/zorba/hashjoins/idx10.xq'
2796--- test/rbkt/Queries/zorba/hashjoins/idx10.xq 2012-03-29 21:13:41 +0000
2797+++ test/rbkt/Queries/zorba/hashjoins/idx10.xq 2012-06-14 14:31:26 +0000
2798@@ -16,7 +16,7 @@
2799 {
2800 for $i in local:bar()/@id
2801 for $j in local:foo()/@id
2802- where xs:string($i) eq xs:string($j)
2803+ where xs:string($i) eq xs:string($j)
2804 return $i
2805 }
2806 catch *
2807@@ -25,3 +25,136 @@
2808 }
2809
2810
2811+(:
2812+
2813+Expression tree after optimization for main query
2814+flwor_expr (0x8d66cd0)
2815+[
2816+ LET (0x8d66c88) $$opt_temp_0 (0x8d66e40)
2817+ [
2818+ hoist/1 (0x8d66c28) [ hoist/1 (0x8d6b298) [ error/0 (0x8d6ae08) [ ] ] ]
2819+ ]
2820+ LET (0x8d66f20) $$opt_temp_1 (0x8d670d8)
2821+ [
2822+ hoist/1 (0x8d66ec0) [
2823+ to/2 (0x8d6afa8) [
2824+ const_expr (0x8d6b008) [ xs:integer [ xs:integer(1) ] ]
2825+ const_expr (0x8d68c48) [ xs:integer [ xs:integer(10) ] ]
2826+ ]
2827+ ]
2828+ ]
2829+ RETURN
2830+ trycatch_expr (0x8d6f258)
2831+ [
2832+ flwor_expr (0x8d6fca8)
2833+ [
2834+ FOR (0x8d6b2f8) i (0x8d6e7f8)
2835+ [
2836+ sort-distinct-nodes-asc/1 (0x8d6e690) [
2837+ relpath_expr (0x8d6b238) [
2838+ function_trace_expr (0x8d6f530) [
2839+ flwor_expr (0x8d6b510)
2840+ [
2841+ FOR (0x8d6e7b0) i (0x8d6f5f0)
2842+ [
2843+ to/2 (0x8d6b578) [
2844+ const_expr (0x8d6e6f0) [ xs:integer [ xs:integer(1) ] ]
2845+ const_expr (0x8d6e748) [ xs:integer [ xs:integer(10) ] ]
2846+ ]
2847+ ]
2848+ RETURN
2849+ elem_expr (0x8d6f4c8) [
2850+ copy nodes = 1
2851+ const_expr (0x8d6f690) [ xs:QName [ xs:QName(,,b) ] ]
2852+ attr_expr (0x8d6f470) [
2853+ const_expr (0x8d6dd28) [ xs:QName [ xs:QName(,,id) ] ]
2854+ =
2855+ enclosed-expr/1 (0x8d6dd80) [
2856+ var_ref (0x8d6dde0) [ i (0x8d6f5f0) ]
2857+ ]
2858+ ]
2859+ ]
2860+ ]
2861+ ]
2862+ REL STEP attribute::match_expr [name_test(id)]
2863+ ]
2864+ ]
2865+ ]
2866+ LET (0x8d671c8) $$opt_temp_2 (0x8d67030)
2867+ [
2868+ hoist/1 (0x8d67158) [
2869+ cast_expr xs:string? (0x8d6f8a8) [
2870+ data/1 (0x8d6f848) [ var_ref (0x8d6f7b8) [ i (0x8d6e7f8) ] ]
2871+ ]
2872+ ]
2873+ ]
2874+ FOR (0x8d6f770) j (0x8d6f360)
2875+ [
2876+ sort-distinct-nodes-asc/1 (0x8d6f1f8) [
2877+ relpath_expr (0x8d6e8d0) [
2878+ function_trace_expr (0x8d692e0) [
2879+ flwor_expr (0x8d6ada0)
2880+ [
2881+ FOR (0x8d69590) $$opt_temp_0 (0x8d69510)
2882+ [
2883+ unhoist (0x8d66d90) [ vref(0x8d66d38) [ $$opt_temp_0 (0x8d66e40) ] ]
2884+ ]
2885+ FOR (0x8d68d50) i (0x8d68cb0)
2886+ [
2887+ unhoist (0x8d66fd0) [ vref (0x8d66f78) [ $$opt_temp_1 (0x8d670d8) ] ]
2888+ ]
2889+ RETURN
2890+ if_expr (0x8d69280) [
2891+ value-equal-integer/2 (0x8d68d98) [
2892+ numeric-mod/2 (0x8d68df8) [
2893+ var_ref (0x8d68e58) [ i (0x8d68cb0) ]
2894+ const_expr (0x8d68ec0) [ xs:integer [ xs:integer(2) ] ]
2895+ ]
2896+ const_expr (0x8d68f28) [ xs:integer [ xs:integer(0) ] ]
2897+ ]
2898+ THEN
2899+ elem_expr (0x8d69150) [
2900+ copy nodes = 1
2901+ const_expr (0x8d68f90) [ xs:QName [ xs:QName(,,a) ] ]
2902+ attr_expr (0x8d690f8) [
2903+ const_expr (0x8d68fe8) [ xs:QName [ xs:QName(,,id) ] ]
2904+ =
2905+ enclosed-expr/1 (0x8d69040) [
2906+ var_ref (0x8d690a0) [ i (0x8d68cb0) ]
2907+ ]
2908+ ]
2909+ ]
2910+ ELSE
2911+ unhoist/1 (0x8d691b8) [
2912+ var_ref (0x8d69218) [ $$opt_temp_0 (0x8d69510) ]
2913+ ]
2914+ ]
2915+ ]
2916+ ]
2917+ REL STEP attribute::match_expr [name_test(id)]
2918+ ]
2919+ ]
2920+ ]
2921+ WHERE
2922+ boolean/1 (0x8d6fbf0) [
2923+ value-equal-string/2 (0x8d6fa10) [
2924+ unhoist/1 (0x8d67268) [
2925+ var_ref (0x8d67210) [ $$opt_temp_2 (0x8d67030) ]
2926+ ]
2927+ cast_expr xs:string? (0x8d6f9b8) [
2928+ data/1 (0x8d6f958) [
2929+ var_ref (0x8d6f900) [ j (0x8d6f360) ]
2930+ ]
2931+ ]
2932+ ]
2933+ ]
2934+ RETURN
2935+ var_ref (0x8d6fc50) [ i (0x8d6e7f8) ]
2936+ ]
2937+ CATCH
2938+ const_expr (0x8d6ff10) [ xs:string [ xs:string(caught) ] ]
2939+ ]
2940+]
2941+
2942+
2943+:)

Subscribers

People subscribed via source and target branches