Process the limit clause (FIRST/SKIP/ROWS)
| 1525 | |
| 1526 | // Process the limit clause (FIRST/SKIP/ROWS) |
| 1527 | void PASS1_limit(DsqlCompilerScratch* dsqlScratch, NestConst<ValueExprNode> firstNode, |
| 1528 | NestConst<ValueExprNode> skipNode, RseNode* rse) |
| 1529 | { |
| 1530 | DEV_BLKCHK(dsqlScratch, dsql_type_req); |
| 1531 | DEV_BLKCHK(firstNode, dsql_type_nod); |
| 1532 | DEV_BLKCHK(skipNode, dsql_type_nod); |
| 1533 | |
| 1534 | dsc descNode; |
| 1535 | |
| 1536 | if (dsqlScratch->clientDialect <= SQL_DIALECT_V5) |
| 1537 | descNode.makeLong(0); |
| 1538 | else |
| 1539 | descNode.makeInt64(0); |
| 1540 | |
| 1541 | rse->dsqlFirst = Node::doDsqlPass(dsqlScratch, firstNode, false); |
| 1542 | |
| 1543 | PASS1_set_parameter_type(dsqlScratch, rse->dsqlFirst, |
| 1544 | [&] (dsc* desc) { *desc = descNode; }, |
| 1545 | false); |
| 1546 | |
| 1547 | rse->dsqlSkip = Node::doDsqlPass(dsqlScratch, skipNode, false); |
| 1548 | |
| 1549 | PASS1_set_parameter_type(dsqlScratch, rse->dsqlSkip, |
| 1550 | [&] (dsc* desc) { *desc = descNode; }, |
| 1551 | false); |
| 1552 | } |
| 1553 | |
| 1554 | |
| 1555 | // Lookup a matching item in the select list. Return node if found else return NULL. |
no test coverage detected