Details
-
Sub-task
-
Status: Scheduled
-
Major
-
Resolution: Unresolved
-
None
-
None
Description
Currently the cse code annotates the expression tree with
i) aliases
ii) alias_scopes to indicate where the aliases should be evaluated
Unfortunately when you have nested records, the transforms for the associated no_createrows are processed more than once, and sometimes that can cause aliases to be added in new places, or alias scopes to be added. This then means that alias(no_createrow) fails to match, causing the row to be recreated.
An example of this can be seen with rchampion1.eclxml if the no_select expansion of a no_createrow is made independent of scope (as it should be).
I think it occurs when you have 2 levels of nested rows, and different values assigned to the 1st level, but the same value assigned to the second level - which causes the place to evaluate the aliases to differ between the two.
I suspect the only sensible solution is to
i) mark alias if they are unconditonal
ii) completely change the way that aliases are evaluated
Attachments
Issue Links
- blocks
-
HPCC-22454 enable #option('expandSelectCreateRow') by default
-
- Scheduled
-
- duplicates
-
HPCC-10548 Expand (no_createrow).field as the field from the transform
-
- Resolved
-
- relates to
-
HPCC-8353 Reimplement code generation for common sub expressions
-
- Accepted
-
-
HPCC-22461 Improve the way data is serialized to child queries
-
- Accepted
-
-
HPCC-22733 Change the way that highly nested ifs are generated
-
- Accepted
-