| 271 | } |
| 272 | |
| 273 | void classMask(unsigned count, ValueExprNode** eq_class, ULONG* mask) |
| 274 | { |
| 275 | // Given an sort/merge join equivalence class (vector of node pointers |
| 276 | // of representative values for rivers), return a bit mask of rivers with values |
| 277 | |
| 278 | if (count > MAX_CONJUNCTS) |
| 279 | { |
| 280 | ERR_post(Arg::Gds(isc_optimizer_blk_exc)); |
| 281 | // Msg442: size of optimizer block exceeded |
| 282 | } |
| 283 | |
| 284 | for (unsigned i = 0; i < OPT_STREAM_BITS; i++) |
| 285 | mask[i] = 0; |
| 286 | |
| 287 | for (unsigned i = 0; i < count; i++, eq_class++) |
| 288 | { |
| 289 | if (*eq_class) |
| 290 | { |
| 291 | SET_DEP_BIT(mask, i); |
| 292 | DEV_BLKCHK(*eq_class, type_nod); |
| 293 | } |
| 294 | } |
| 295 | } |
| 296 | |
| 297 | unsigned getRiverCount(unsigned count, const ValueExprNode* const* eq_class) |
| 298 | { |
no test coverage detected