| 624 | } |
| 625 | |
| 626 | SIValue AR_EXP_Evaluate_NoThrow(AR_ExpNode *root, const Record r) { |
| 627 | SIValue result; |
| 628 | AR_EXP_Result res = _AR_EXP_Evaluate(root, r, &result); |
| 629 | |
| 630 | if(res == EVAL_ERR) { |
| 631 | return SI_NullVal(); // Otherwise return NULL; the query-level error will be emitted after cleanup. |
| 632 | } |
| 633 | |
| 634 | // at least one param node was encountered during evaluation, |
| 635 | // tree should be parameters free, try reducing the tree |
| 636 | if(res == EVAL_FOUND_PARAM) { |
| 637 | AR_EXP_ReduceToScalar(root, true, NULL); |
| 638 | } |
| 639 | |
| 640 | return result; |
| 641 | } |
| 642 | |
| 643 | SIValue AR_EXP_Evaluate |
| 644 | ( |
no test coverage detected