| 273 | } |
| 274 | |
| 275 | ValueExprNode* AggNode::dsqlFieldRemapper(FieldRemapper& visitor) |
| 276 | { |
| 277 | AggregateFinder aggFinder(visitor.getPool(), visitor.dsqlScratch, false); |
| 278 | aggFinder.deepestLevel = visitor.dsqlScratch->scopeLevel; |
| 279 | aggFinder.currentLevel = visitor.currentLevel; |
| 280 | |
| 281 | if (dsqlAggregateFinder(aggFinder)) |
| 282 | { |
| 283 | if (!visitor.window && visitor.dsqlScratch->scopeLevel == aggFinder.deepestLevel) |
| 284 | return PASS1_post_map(visitor.dsqlScratch, this, visitor.context, visitor.windowNode); |
| 285 | } |
| 286 | |
| 287 | NodeRefsHolder holder(visitor.getPool()); |
| 288 | getChildren(holder, true); |
| 289 | |
| 290 | for (auto i : holder.refs) |
| 291 | { |
| 292 | if (*i) |
| 293 | *i = (*i)->dsqlFieldRemapper(visitor); |
| 294 | } |
| 295 | |
| 296 | return this; |
| 297 | } |
| 298 | |
| 299 | bool AggNode::dsqlMatch(DsqlCompilerScratch* dsqlScratch, const ExprNode* other, bool ignoreMapCast) const |
| 300 | { |