| 349 | } |
| 350 | |
| 351 | static TupleTableSlot * |
| 352 | ExecLimit(PlanState *node) |
| 353 | { |
| 354 | TupleTableSlot *result; |
| 355 | |
| 356 | result = ExecLimit_guts(node); |
| 357 | |
| 358 | if (TupIsNull(result) && ScanDirectionIsForward(node->state->es_direction) && |
| 359 | !((LimitState *) node)->expect_rescan) |
| 360 | { |
| 361 | /* |
| 362 | * CDB: We'll read no more from inner subtree. To keep our sibling |
| 363 | * QEs from being starved, tell source QEs not to clog up the |
| 364 | * pipeline with our never-to-be-consumed data. |
| 365 | */ |
| 366 | ExecSquelchNode(node, false); |
| 367 | } |
| 368 | |
| 369 | return result; |
| 370 | } |
| 371 | |
| 372 | /* |
| 373 | * Evaluate the limit/offset expressions --- done at startup or rescan. |
nothing calls this directly
no test coverage detected