Merge lp:~zorba-coders/zorba/markos-scratch into lp:zorba

Proposed by Markos Zaharioudakis
Status: Merged
Approved by: Markos Zaharioudakis
Approved revision: 10998
Merged at revision: 11154
Proposed branch: lp:~zorba-coders/zorba/markos-scratch
Merge into: lp:zorba
Diff against target: 784 lines (+117/-99)
22 files modified
ChangeLog (+1/-0)
src/compiler/codegen/plan_visitor.cpp (+47/-21)
src/compiler/rewriter/rules/flwor_rules.cpp (+1/-10)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9065.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9066.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9067.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9068.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9197.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9198.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9199.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9204.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9207.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/gary1.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/idx4.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9065.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9198.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9199.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-gary1.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-idx4.iter (+3/-3)
test/rbkt/ExpCompilerResults/IterPlan/zorba/udf/udf-recursive-1.iter (+4/-4)
test/rbkt/ExpCompilerResults/IterPlan/zorba/w3c/rdb-queries-results-q5.iter (+13/-13)
test/rbkt/ExpCompilerResults/IterPlan/zorba/xray/ppm_10.iter (+3/-3)
To merge this branch: bzr merge lp:~zorba-coders/zorba/markos-scratch
Reviewer Review Type Date Requested Status
Markos Zaharioudakis Approve
Review via email: mp+140471@code.launchpad.net

Commit message

convert LET vars whose domain sequence has exactly one item to FOR vars; do this during codegen instead of during optimization

Description of the change

convert LET vars whose domain sequence has exactly one item to FOR vars; do this during codegen instead of during optimization

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 :
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

Validation queue job markos-scratch-2012-12-18T15-32-01.573Z 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-12-14 07:27:04 +0000
3+++ ChangeLog 2012-12-18 15:18:46 +0000
4@@ -18,6 +18,7 @@
5 * Fixed iteration over the components of a window clause; this improves static
6 type computation of expressions referencing window vars.
7 * No need to cast xs:untypedAtomic to xs:string in order-by expression.
8+ * Convert LET vars whose domain sequence has exactly one item to FOR vars.
9
10 Bug Fixes/Other Changes:
11 * Change XQXQ (XQuery-for-XQuery) module now part of Zorba core
12
13=== modified file 'src/compiler/codegen/plan_visitor.cpp'
14--- src/compiler/codegen/plan_visitor.cpp 2012-10-29 11:41:36 +0000
15+++ src/compiler/codegen/plan_visitor.cpp 2012-12-18 15:18:46 +0000
16@@ -197,6 +197,10 @@
17 public:
18 PlanIter_t theInputVar;
19 std::vector<PlanIter_t> theOutputVarRefs;
20+ bool theIsFakeLetVar;
21+
22+public:
23+ VarRebind() : theIsFakeLetVar(false) {}
24 };
25
26
27@@ -776,13 +780,16 @@
28 ZORBA_ASSERT(i >= 0);
29 }
30
31+ FlworClauseVarMap* clauseVarMap = theClauseStack[i];
32+ flwor_expr* flworExpr = clauseVarMap->theClause->get_flwor_expr();
33+ bool isFakeLetVar = clauseVarMap->theVarRebinds[varPos]->theIsFakeLetVar;
34+
35+ if (isFakeLetVar)
36+ isForVar = true;
37+
38 // Create a var ref iter in the output of C.
39 varIter = create_var_iter(var, isForVar);
40
41- FlworClauseVarMap* clauseVarMap = theClauseStack[i];
42-
43- flwor_expr* flworExpr = clauseVarMap->theClause->get_flwor_expr();
44-
45 clauseVarMap->theVarRebinds[varPos]->theOutputVarRefs.push_back(varIter);
46
47 if (clauseVarMap->theIsGeneral || flworExpr->is_sequential())
48@@ -807,6 +814,7 @@
49 clauseVarMap->theVarRebinds.push_back(varRebind);
50
51 varRebind->theInputVar = varIter;
52+ varRebind->theIsFakeLetVar = isFakeLetVar;
53
54 varIter = create_var_iter(var, isForVar);
55
56@@ -1097,12 +1105,12 @@
57 const flwor_clause::rebind_list_t& gvars = gc->get_grouping_vars();
58 const flwor_clause::rebind_list_t& ngvars = gc->get_nongrouping_vars();
59
60- for (ulong i = 0; i < gvars.size(); ++i)
61+ for (csize i = 0; i < gvars.size(); ++i)
62 {
63 gvars[i].first->accept(*this);
64 }
65
66- for (ulong i = 0; i < ngvars.size(); ++i)
67+ for (csize i = 0; i < ngvars.size(); ++i)
68 {
69 ngvars[i].first->accept(*this);
70 }
71@@ -1116,8 +1124,8 @@
72 {
73 const orderby_clause* oc = reinterpret_cast<const orderby_clause*>(c);
74
75- ulong numCols = oc->num_columns();
76- for (ulong i = 0; i < numCols; ++i)
77+ csize numCols = oc->num_columns();
78+ for (csize i = 0; i < numCols; ++i)
79 {
80 oc->get_column_expr(i)->accept(*this);
81 }
82@@ -1208,11 +1216,15 @@
83 case flwor_clause::let_clause:
84 {
85 const let_clause* lc = static_cast<const let_clause *>(c);
86+ xqtref_t domType = lc->get_expr()->get_return_type();
87
88 VarRebind_t varRebind = new VarRebind;
89 clauseVarMap->theVarExprs.push_back(lc->get_var());
90 clauseVarMap->theVarRebinds.push_back(varRebind);
91
92+ if (domType->get_quantifier() == TypeConstants::QUANT_ONE)
93+ varRebind->theIsFakeLetVar = true;
94+
95 break;
96 }
97
98@@ -1513,14 +1525,19 @@
99
100 std::vector<PlanIter_t>& varRefs = clauseVarMap->theVarRebinds[0]->theOutputVarRefs;
101
102- return new flwor::LetIterator(sctx,
103- var->get_loc(),
104- var->get_name(),
105- PREV_ITER,
106- domainIter,
107- varRefs,
108- lc->lazyEval(),
109- true); // materilize
110+ if (clauseVarMap->theVarRebinds[0]->theIsFakeLetVar)
111+ {
112+ std::vector<PlanIter_t>* posVarRefs = &no_var_iters;
113+
114+ return new flwor::ForIterator(sctx, var->get_loc(), var->get_name(),
115+ PREV_ITER, domainIter, varRefs, *posVarRefs);
116+ }
117+ else
118+ {
119+ return new flwor::LetIterator(sctx, var->get_loc(), var->get_name(),
120+ PREV_ITER, domainIter, varRefs,
121+ lc->lazyEval(), true); // materialize
122+ }
123 }
124
125 //
126@@ -1894,11 +1911,20 @@
127 std::vector<PlanIter_t>& varRefs =
128 clauseVarMap->theVarRebinds[0]->theOutputVarRefs;
129
130- forletClauses.push_back(flwor::ForLetClause(var->get_name(),
131- varRefs,
132- domainIter,
133- lc->lazyEval(),
134- true)); // materialize
135+ if (clauseVarMap->theVarRebinds[0]->theIsFakeLetVar)
136+ {
137+ forletClauses.push_back(flwor::ForLetClause(var->get_name(),
138+ varRefs,
139+ domainIter));
140+ }
141+ else
142+ {
143+ forletClauses.push_back(flwor::ForLetClause(var->get_name(),
144+ varRefs,
145+ domainIter,
146+ lc->lazyEval(),
147+ true)); // materialize
148+ }
149 break;
150 }
151
152
153=== modified file 'src/compiler/rewriter/rules/flwor_rules.cpp'
154--- src/compiler/rewriter/rules/flwor_rules.cpp 2012-10-30 13:33:05 +0000
155+++ src/compiler/rewriter/rules/flwor_rules.cpp 2012-12-18 15:18:46 +0000
156@@ -218,9 +218,7 @@
157 // (a) Remove, if possible, FOR/LET vars that are not referenced anywhere
158 // (b) Replace, if possible, FOR/LET vars that are referenced only once, with
159 // their domain expr.
160- // (c) Change a LET var into a FOR var, if its domain expr consists of
161- // exactly one item.
162- // (d) Remove any unused non-group variables from GROUP BY clauses.
163+ // (c) Remove any unused non-group variables from GROUP BY clauses.
164 for (csize i = 0; i < numClauses; ++i)
165 {
166 int numRefs;
167@@ -327,7 +325,6 @@
168 {
169 let_clause* lc = static_cast<let_clause *>(c);
170 expr* domExpr = lc->get_expr();
171- TypeConstants::quantifier_t domQuant = domExpr->get_return_type()->get_quantifier();
172 var = lc->get_var();
173
174 if (safe_to_fold_var(i, numRefs))
175@@ -337,12 +334,6 @@
176
177 folded = true;
178 }
179- else if (domQuant == TypeConstants::QUANT_ONE)
180- {
181- lc->set_kind(flwor_clause::for_clause);
182- var->set_kind(var_expr::for_var);
183- modified = true;
184- }
185 }
186 default:
187 break;
188
189=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9065.iter'
190--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9065.iter 2012-09-19 21:16:15 +0000
191+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9065.iter 2012-12-18 15:18:46 +0000
192@@ -16,7 +16,7 @@
193 </ChildAxisIterator>
194 </HoistIterator>
195 </LetVariable>
196- <LetVariable name="$$opt_temp_0" materialize="true">
197+ <ForVariable name="$$opt_temp_0">
198 <HoistIterator>
199 <FnCountIterator>
200 <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
201@@ -28,7 +28,7 @@
202 </ChildAxisIterator>
203 </FnCountIterator>
204 </HoistIterator>
205- </LetVariable>
206+ </ForVariable>
207 <ForVariable name="er">
208 <OpToIterator>
209 <SingletonIterator value="xs:integer(1)"/>
210@@ -38,7 +38,7 @@
211 <WhereClause>
212 <TypedValueCompareIterator_INTEGER>
213 <UnhoistIterator>
214- <LetVarIterator varname="$$opt_temp_0"/>
215+ <ForVarIterator varname="$$opt_temp_0"/>
216 </UnhoistIterator>
217 <ForVarIterator varname="er"/>
218 </TypedValueCompareIterator_INTEGER>
219
220=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9066.iter'
221--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9066.iter 2012-09-19 21:16:15 +0000
222+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9066.iter 2012-12-18 15:18:46 +0000
223@@ -5,7 +5,7 @@
224 <SingletonIterator value="xs:string(books.xml)"/>
225 </FnDocIterator>
226 </ForVariable>
227- <LetVariable name="$$opt_temp_0" materialize="true">
228+ <ForVariable name="$$opt_temp_0">
229 <HoistIterator>
230 <FnCountIterator>
231 <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
232@@ -17,7 +17,7 @@
233 </ChildAxisIterator>
234 </FnCountIterator>
235 </HoistIterator>
236- </LetVariable>
237+ </ForVariable>
238 <ForVariable name="er">
239 <OpToIterator>
240 <SingletonIterator value="xs:integer(1)"/>
241@@ -27,7 +27,7 @@
242 <WhereClause>
243 <TypedValueCompareIterator_INTEGER>
244 <UnhoistIterator>
245- <LetVarIterator varname="$$opt_temp_0"/>
246+ <ForVarIterator varname="$$opt_temp_0"/>
247 </UnhoistIterator>
248 <ForVarIterator varname="er"/>
249 </TypedValueCompareIterator_INTEGER>
250
251=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9067.iter'
252--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9067.iter 2012-09-19 21:16:15 +0000
253+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9067.iter 2012-12-18 15:18:46 +0000
254@@ -33,7 +33,7 @@
255 </FnDocIterator>
256 </DescendantAxisIterator>
257 </ForVariable>
258- <LetVariable name="$$opt_temp_1" materialize="true">
259+ <ForVariable name="$$opt_temp_1">
260 <HoistIterator>
261 <FnCountIterator>
262 <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
263@@ -41,12 +41,12 @@
264 </ChildAxisIterator>
265 </FnCountIterator>
266 </HoistIterator>
267- </LetVariable>
268+ </ForVariable>
269 <ForVariable name="er">
270 <ProbeIndexPointValueIterator>
271 <SingletonIterator value="xs:QName(,,tempIndex0)"/>
272 <UnhoistIterator>
273- <LetVarIterator varname="$$opt_temp_1"/>
274+ <ForVarIterator varname="$$opt_temp_1"/>
275 </UnhoistIterator>
276 </ProbeIndexPointValueIterator>
277 </ForVariable>
278
279=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9068.iter'
280--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9068.iter 2012-09-19 21:16:15 +0000
281+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9068.iter 2012-12-18 15:18:46 +0000
282@@ -40,7 +40,7 @@
283 </ChildAxisIterator>
284 </HoistIterator>
285 </LetVariable>
286- <LetVariable name="$$opt_temp_1" materialize="true">
287+ <ForVariable name="$$opt_temp_1">
288 <HoistIterator>
289 <FnCountIterator>
290 <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
291@@ -48,12 +48,12 @@
292 </ChildAxisIterator>
293 </FnCountIterator>
294 </HoistIterator>
295- </LetVariable>
296+ </ForVariable>
297 <ForVariable name="er">
298 <ProbeIndexPointValueIterator>
299 <SingletonIterator value="xs:QName(,,tempIndex0)"/>
300 <UnhoistIterator>
301- <LetVarIterator varname="$$opt_temp_1"/>
302+ <ForVarIterator varname="$$opt_temp_1"/>
303 </UnhoistIterator>
304 </ProbeIndexPointValueIterator>
305 </ForVariable>
306
307=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9197.iter'
308--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9197.iter 2012-09-19 21:16:15 +0000
309+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9197.iter 2012-12-18 15:18:46 +0000
310@@ -36,7 +36,7 @@
311 </FnDocIterator>
312 </DescendantAxisIterator>
313 </ForVariable>
314- <LetVariable name="$$opt_temp_1" materialize="true">
315+ <ForVariable name="$$opt_temp_1">
316 <HoistIterator>
317 <FnCountIterator>
318 <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
319@@ -44,12 +44,12 @@
320 </ChildAxisIterator>
321 </FnCountIterator>
322 </HoistIterator>
323- </LetVariable>
324+ </ForVariable>
325 <ForVariable name="anzahl">
326 <ProbeIndexPointValueIterator>
327 <SingletonIterator value="xs:QName(,,tempIndex0)"/>
328 <UnhoistIterator>
329- <LetVarIterator varname="$$opt_temp_1"/>
330+ <ForVarIterator varname="$$opt_temp_1"/>
331 </UnhoistIterator>
332 </ProbeIndexPointValueIterator>
333 </ForVariable>
334
335=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9198.iter'
336--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9198.iter 2012-09-19 21:16:15 +0000
337+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9198.iter 2012-12-18 15:18:46 +0000
338@@ -36,7 +36,7 @@
339 </FnDocIterator>
340 </DescendantAxisIterator>
341 </ForVariable>
342- <LetVariable name="$$opt_temp_1" materialize="true">
343+ <ForVariable name="$$opt_temp_1">
344 <HoistIterator>
345 <FnCountIterator>
346 <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
347@@ -44,12 +44,12 @@
348 </ChildAxisIterator>
349 </FnCountIterator>
350 </HoistIterator>
351- </LetVariable>
352+ </ForVariable>
353 <ForVariable name="anzahl">
354 <ProbeIndexPointValueIterator>
355 <SingletonIterator value="xs:QName(,,tempIndex0)"/>
356 <UnhoistIterator>
357- <LetVarIterator varname="$$opt_temp_1"/>
358+ <ForVarIterator varname="$$opt_temp_1"/>
359 </UnhoistIterator>
360 </ProbeIndexPointValueIterator>
361 </ForVariable>
362
363=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9199.iter'
364--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9199.iter 2012-09-19 21:16:15 +0000
365+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9199.iter 2012-12-18 15:18:46 +0000
366@@ -36,7 +36,7 @@
367 </FnDocIterator>
368 </DescendantAxisIterator>
369 </ForVariable>
370- <LetVariable name="$$opt_temp_1" materialize="true">
371+ <ForVariable name="$$opt_temp_1">
372 <HoistIterator>
373 <FnCountIterator>
374 <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
375@@ -44,12 +44,12 @@
376 </ChildAxisIterator>
377 </FnCountIterator>
378 </HoistIterator>
379- </LetVariable>
380+ </ForVariable>
381 <ForVariable name="anzahl">
382 <ProbeIndexPointValueIterator>
383 <SingletonIterator value="xs:QName(,,tempIndex0)"/>
384 <UnhoistIterator>
385- <LetVarIterator varname="$$opt_temp_1"/>
386+ <ForVarIterator varname="$$opt_temp_1"/>
387 </UnhoistIterator>
388 </ProbeIndexPointValueIterator>
389 </ForVariable>
390
391=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9204.iter'
392--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9204.iter 2012-09-19 21:16:15 +0000
393+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9204.iter 2012-12-18 15:18:46 +0000
394@@ -33,7 +33,7 @@
395 </FnDocIterator>
396 </DescendantAxisIterator>
397 </ForVariable>
398- <LetVariable name="$$opt_temp_1" materialize="true">
399+ <ForVariable name="$$opt_temp_1">
400 <HoistIterator>
401 <FnCountIterator>
402 <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
403@@ -41,7 +41,7 @@
404 </ChildAxisIterator>
405 </FnCountIterator>
406 </HoistIterator>
407- </LetVariable>
408+ </ForVariable>
409 <ReturnClause>
410 <ElementIterator>
411 <SingletonIterator value="xs:QName(,,karteikasten)"/>
412@@ -51,7 +51,7 @@
413 <ProbeIndexPointValueIterator>
414 <SingletonIterator value="xs:QName(,,tempIndex0)"/>
415 <UnhoistIterator>
416- <LetVarIterator varname="$$opt_temp_1"/>
417+ <ForVarIterator varname="$$opt_temp_1"/>
418 </UnhoistIterator>
419 </ProbeIndexPointValueIterator>
420 </ForVariable>
421
422=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9207.iter'
423--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9207.iter 2012-09-19 21:16:15 +0000
424+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/9207.iter 2012-12-18 15:18:46 +0000
425@@ -36,7 +36,7 @@
426 </FnDocIterator>
427 </DescendantAxisIterator>
428 </ForVariable>
429- <LetVariable name="$$opt_temp_1" materialize="true">
430+ <ForVariable name="$$opt_temp_1">
431 <HoistIterator>
432 <FnCountIterator>
433 <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
434@@ -44,12 +44,12 @@
435 </ChildAxisIterator>
436 </FnCountIterator>
437 </HoistIterator>
438- </LetVariable>
439+ </ForVariable>
440 <ForVariable name="anzahl">
441 <ProbeIndexPointValueIterator>
442 <SingletonIterator value="xs:QName(,,tempIndex0)"/>
443 <UnhoistIterator>
444- <LetVarIterator varname="$$opt_temp_1"/>
445+ <ForVarIterator varname="$$opt_temp_1"/>
446 </UnhoistIterator>
447 </ProbeIndexPointValueIterator>
448 </ForVariable>
449
450=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/gary1.iter'
451--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/gary1.iter 2012-10-08 12:09:36 +0000
452+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/gary1.iter 2012-12-18 15:18:46 +0000
453@@ -147,7 +147,7 @@
454 <ForVarIterator varname="j"/>
455 </AttributeAxisIterator>
456 </LetVariable>
457- <LetVariable name="$$opt_temp_0" materialize="true">
458+ <ForVariable name="$$opt_temp_0">
459 <HoistIterator>
460 <CompareIterator>
461 <FnDataIterator>
462@@ -156,7 +156,7 @@
463 <SingletonIterator value="xs:integer(1980)"/>
464 </CompareIterator>
465 </HoistIterator>
466- </LetVariable>
467+ </ForVariable>
468 <ReturnClause>
469 <ElementIterator>
470 <SingletonIterator value="xs:QName(,,year)"/>
471@@ -193,7 +193,7 @@
472 <IfThenElseIterator>
473 <AndIterator>
474 <UnhoistIterator>
475- <LetVarIterator varname="$$opt_temp_0"/>
476+ <ForVarIterator varname="$$opt_temp_0"/>
477 </UnhoistIterator>
478 <CompareIterator>
479 <FnDataIterator>
480
481=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/idx4.iter'
482--- test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/idx4.iter 2012-10-08 12:09:36 +0000
483+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/hashjoins/idx4.iter 2012-12-18 15:18:46 +0000
484@@ -62,13 +62,13 @@
485 </flwor::FLWORIterator>
486 </CreateInternalIndexIterator>
487 <flwor::FLWORIterator>
488- <LetVariable name="$$opt_temp_0" materialize="true">
489+ <ForVariable name="$$opt_temp_0">
490 <HoistIterator>
491 <TreatIterator quant="">
492 <LetVarIterator varname="e"/>
493 </TreatIterator>
494 </HoistIterator>
495- </LetVariable>
496+ </ForVariable>
497 <ForVariable name="prefix">
498 <flwor::FLWORIterator>
499 <ForVariable name="prefixE">
500@@ -83,7 +83,7 @@
501 <NamespaceUriForPrefixIterator>
502 <ForVarIterator varname="prefixE"/>
503 <UnhoistIterator>
504- <LetVarIterator varname="$$opt_temp_0"/>
505+ <ForVarIterator varname="$$opt_temp_0"/>
506 </UnhoistIterator>
507 </NamespaceUriForPrefixIterator>
508 </HoistIterator>
509
510=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9065.iter'
511--- test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9065.iter 2012-09-19 21:16:15 +0000
512+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9065.iter 2012-12-18 15:18:46 +0000
513@@ -16,7 +16,7 @@
514 </ChildAxisIterator>
515 </HoistIterator>
516 </LetVariable>
517- <LetVariable name="$$opt_temp_0" materialize="true">
518+ <ForVariable name="$$opt_temp_0">
519 <HoistIterator>
520 <FnCountIterator>
521 <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
522@@ -28,7 +28,7 @@
523 </ChildAxisIterator>
524 </FnCountIterator>
525 </HoistIterator>
526- </LetVariable>
527+ </ForVariable>
528 <ForVariable name="er">
529 <OpToIterator>
530 <SingletonIterator value="xs:integer(1)"/>
531@@ -38,7 +38,7 @@
532 <WhereClause>
533 <TypedValueCompareIterator_INTEGER>
534 <UnhoistIterator>
535- <LetVarIterator varname="$$opt_temp_0"/>
536+ <ForVarIterator varname="$$opt_temp_0"/>
537 </UnhoistIterator>
538 <ForVarIterator varname="er"/>
539 </TypedValueCompareIterator_INTEGER>
540
541=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9198.iter'
542--- test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9198.iter 2012-09-19 21:16:15 +0000
543+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9198.iter 2012-12-18 15:18:46 +0000
544@@ -36,7 +36,7 @@
545 </FnDocIterator>
546 </DescendantAxisIterator>
547 </ForVariable>
548- <LetVariable name="$$opt_temp_1" materialize="true">
549+ <ForVariable name="$$opt_temp_1">
550 <HoistIterator>
551 <FnCountIterator>
552 <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
553@@ -44,12 +44,12 @@
554 </ChildAxisIterator>
555 </FnCountIterator>
556 </HoistIterator>
557- </LetVariable>
558+ </ForVariable>
559 <ForVariable name="anzahl">
560 <ProbeIndexPointValueIterator>
561 <SingletonIterator value="xs:QName(,,tempIndex0)"/>
562 <UnhoistIterator>
563- <LetVarIterator varname="$$opt_temp_1"/>
564+ <ForVarIterator varname="$$opt_temp_1"/>
565 </UnhoistIterator>
566 </ProbeIndexPointValueIterator>
567 </ForVariable>
568
569=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9199.iter'
570--- test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9199.iter 2012-09-19 21:16:15 +0000
571+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-9199.iter 2012-12-18 15:18:46 +0000
572@@ -36,7 +36,7 @@
573 </FnDocIterator>
574 </DescendantAxisIterator>
575 </ForVariable>
576- <LetVariable name="$$opt_temp_1" materialize="true">
577+ <ForVariable name="$$opt_temp_1">
578 <HoistIterator>
579 <FnCountIterator>
580 <ChildAxisIterator test kind="match_name_test" qname="xs:QName(,,author)" typename="*" nill allowed="0">
581@@ -44,12 +44,12 @@
582 </ChildAxisIterator>
583 </FnCountIterator>
584 </HoistIterator>
585- </LetVariable>
586+ </ForVariable>
587 <ForVariable name="anzahl">
588 <ProbeIndexPointValueIterator>
589 <SingletonIterator value="xs:QName(,,tempIndex0)"/>
590 <UnhoistIterator>
591- <LetVarIterator varname="$$opt_temp_1"/>
592+ <ForVarIterator varname="$$opt_temp_1"/>
593 </UnhoistIterator>
594 </ProbeIndexPointValueIterator>
595 </ForVariable>
596
597=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-gary1.iter'
598--- test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-gary1.iter 2012-10-08 12:09:36 +0000
599+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-gary1.iter 2012-12-18 15:18:46 +0000
600@@ -147,7 +147,7 @@
601 <ForVarIterator varname="j"/>
602 </AttributeAxisIterator>
603 </LetVariable>
604- <LetVariable name="$$opt_temp_0" materialize="true">
605+ <ForVariable name="$$opt_temp_0">
606 <HoistIterator>
607 <CompareIterator>
608 <FnDataIterator>
609@@ -156,7 +156,7 @@
610 <SingletonIterator value="xs:integer(1980)"/>
611 </CompareIterator>
612 </HoistIterator>
613- </LetVariable>
614+ </ForVariable>
615 <ReturnClause>
616 <ElementIterator copyInputNodes="false">
617 <SingletonIterator value="xs:QName(,,year)"/>
618@@ -193,7 +193,7 @@
619 <IfThenElseIterator>
620 <AndIterator>
621 <UnhoistIterator>
622- <LetVarIterator varname="$$opt_temp_0"/>
623+ <ForVarIterator varname="$$opt_temp_0"/>
624 </UnhoistIterator>
625 <CompareIterator>
626 <FnDataIterator>
627
628=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-idx4.iter'
629--- test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-idx4.iter 2012-10-08 12:09:36 +0000
630+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/no-copy/hashjoin-idx4.iter 2012-12-18 15:18:46 +0000
631@@ -62,13 +62,13 @@
632 </flwor::FLWORIterator>
633 </CreateInternalIndexIterator>
634 <flwor::FLWORIterator>
635- <LetVariable name="$$opt_temp_0" materialize="true">
636+ <ForVariable name="$$opt_temp_0">
637 <HoistIterator>
638 <TreatIterator quant="">
639 <LetVarIterator varname="e"/>
640 </TreatIterator>
641 </HoistIterator>
642- </LetVariable>
643+ </ForVariable>
644 <ForVariable name="prefix">
645 <flwor::FLWORIterator>
646 <ForVariable name="prefixE">
647@@ -83,7 +83,7 @@
648 <NamespaceUriForPrefixIterator>
649 <ForVarIterator varname="prefixE"/>
650 <UnhoistIterator>
651- <LetVarIterator varname="$$opt_temp_0"/>
652+ <ForVarIterator varname="$$opt_temp_0"/>
653 </UnhoistIterator>
654 </NamespaceUriForPrefixIterator>
655 </HoistIterator>
656
657=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/udf/udf-recursive-1.iter'
658--- test/rbkt/ExpCompilerResults/IterPlan/zorba/udf/udf-recursive-1.iter 2012-10-19 20:42:38 +0000
659+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/udf/udf-recursive-1.iter 2012-12-18 15:18:46 +0000
660@@ -5,9 +5,9 @@
661
662 Iterator tree for local:get-request-id2:
663 <flwor::FLWORIterator>
664- <LetVariable name="p" materialize="true">
665+ <ForVariable name="p">
666 <LetVarIterator varname="p"/>
667- </LetVariable>
668+ </ForVariable>
669 <ReturnClause>
670 <UDFunctionCallIterator cached="true">
671 <SingletonIterator value="xs:integer(4)"/>
672@@ -18,9 +18,9 @@
673 Iterator tree for local:get-request-id1:
674 <PromoteIterator type="xs:string">
675 <flwor::FLWORIterator>
676- <LetVariable name="p" materialize="true">
677+ <ForVariable name="p">
678 <LetVarIterator varname="p"/>
679- </LetVariable>
680+ </ForVariable>
681 <ReturnClause>
682 <flwor::FLWORIterator>
683 <ForVariable name="i">
684
685=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/w3c/rdb-queries-results-q5.iter'
686--- test/rbkt/ExpCompilerResults/IterPlan/zorba/w3c/rdb-queries-results-q5.iter 2012-09-27 11:14:04 +0000
687+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/w3c/rdb-queries-results-q5.iter 2012-12-18 15:18:46 +0000
688@@ -78,7 +78,7 @@
689 </DescendantAxisIterator>
690 </NodeSortIterator>
691 </ForVariable>
692- <LetVariable name="$$opt_temp_3" materialize="true">
693+ <ForVariable name="$$opt_temp_3">
694 <HoistIterator>
695 <CompareIterator>
696 <FnDataIterator>
697@@ -89,7 +89,7 @@
698 <SingletonIterator value="xs:string(Tom Jones)"/>
699 </CompareIterator>
700 </HoistIterator>
701- </LetVariable>
702+ </ForVariable>
703 <ForVariable name="buyer">
704 <UnhoistIterator>
705 <LetVarIterator varname="$$opt_temp_0"/>
706@@ -182,7 +182,7 @@
707 </FnDataIterator>
708 </HoistIterator>
709 </LetVariable>
710- <LetVariable name="$$opt_temp_5" materialize="true">
711+ <ForVariable name="$$opt_temp_5">
712 <HoistIterator>
713 <ContainsIterator>
714 <PromoteIterator type="xs:string">
715@@ -197,8 +197,8 @@
716 <SingletonIterator value="xs:string(Bicycle)"/>
717 </ContainsIterator>
718 </HoistIterator>
719- </LetVariable>
720- <LetVariable name="$$opt_temp_4" materialize="true">
721+ </ForVariable>
722+ <ForVariable name="$$opt_temp_4">
723 <HoistIterator>
724 <CompareIterator>
725 <FnDataIterator>
726@@ -213,7 +213,7 @@
727 </FnDataIterator>
728 </CompareIterator>
729 </HoistIterator>
730- </LetVariable>
731+ </ForVariable>
732 <ForVariable name="highbid">
733 <NodeSortIterator distinct="true" ascending="true">
734 <ProbeIndexPointGeneralIterator>
735@@ -227,13 +227,13 @@
736 <WhereClause>
737 <AndIterator>
738 <UnhoistIterator>
739- <LetVarIterator varname="$$opt_temp_3"/>
740- </UnhoistIterator>
741- <UnhoistIterator>
742- <LetVarIterator varname="$$opt_temp_4"/>
743- </UnhoistIterator>
744- <UnhoistIterator>
745- <LetVarIterator varname="$$opt_temp_5"/>
746+ <ForVarIterator varname="$$opt_temp_3"/>
747+ </UnhoistIterator>
748+ <UnhoistIterator>
749+ <ForVarIterator varname="$$opt_temp_4"/>
750+ </UnhoistIterator>
751+ <UnhoistIterator>
752+ <ForVarIterator varname="$$opt_temp_5"/>
753 </UnhoistIterator>
754 <SingletonIterator value="xs:boolean(true)"/>
755 <CompareIterator>
756
757=== modified file 'test/rbkt/ExpCompilerResults/IterPlan/zorba/xray/ppm_10.iter'
758--- test/rbkt/ExpCompilerResults/IterPlan/zorba/xray/ppm_10.iter 2012-12-06 22:49:35 +0000
759+++ test/rbkt/ExpCompilerResults/IterPlan/zorba/xray/ppm_10.iter 2012-12-18 15:18:46 +0000
760@@ -214,13 +214,13 @@
761 <SingletonIterator value="xs:decimal(0.5)"/>
762 </SpecificNumArithIterator_AddOperation_DECIMAL>
763 </ForVariable>
764- <LetVariable name="$$opt_temp_1" materialize="true">
765+ <ForVariable name="$$opt_temp_1">
766 <HoistIterator>
767 <PromoteIterator type="xs:double">
768 <ForVarIterator varname="y-recentered"/>
769 </PromoteIterator>
770 </HoistIterator>
771- </LetVariable>
772+ </ForVariable>
773 <ForVariable name="x">
774 <UnhoistIterator>
775 <LetVarIterator varname="$$opt_temp_0"/>
776@@ -245,7 +245,7 @@
777 </SpecificNumArithIterator_MultiplyOperation_DECIMAL>
778 </PromoteIterator>
779 <UnhoistIterator>
780- <LetVarIterator varname="$$opt_temp_1"/>
781+ <ForVarIterator varname="$$opt_temp_1"/>
782 </UnhoistIterator>
783 </UDFunctionCallIterator>
784 </ForVariable>

Subscribers

People subscribed via source and target branches