| 3037 | // |
| 3038 | |
| 3039 | static gpre_nod* par_stat( gpre_req* request) |
| 3040 | { |
| 3041 | assert_IS_REQ(request); |
| 3042 | |
| 3043 | request->req_in_subselect++; |
| 3044 | scope previous_scope; |
| 3045 | push_scope(request, &previous_scope); |
| 3046 | |
| 3047 | const bool distinct = (!MSC_match(KW_ALL) && MSC_match(KW_DISTINCT)); |
| 3048 | |
| 3049 | request->req_in_select_list++; |
| 3050 | gpre_nod* item = par_udf(request); |
| 3051 | if (!item) |
| 3052 | item = SQE_value(request, false, NULL, NULL); |
| 3053 | request->req_in_select_list--; |
| 3054 | |
| 3055 | gpre_nod* field_list = MSC_node(nod_list, 1); |
| 3056 | field_list->nod_arg[0] = item; |
| 3057 | gpre_rse* select = par_rse(request, field_list, distinct); |
| 3058 | select->rse_flags |= RSE_singleton; |
| 3059 | |
| 3060 | item = select->rse_fields->nod_arg[0]; |
| 3061 | |
| 3062 | gpre_nod* node = MSC_node(nod_via, 3); |
| 3063 | node->nod_count = 0; |
| 3064 | node->nod_arg[0] = (gpre_nod*) select; |
| 3065 | node->nod_arg[2] = MSC_node(nod_null, 0); |
| 3066 | node->nod_arg[1] = item; |
| 3067 | |
| 3068 | EXP_rse_cleanup(select); |
| 3069 | pop_scope(request, &previous_scope); |
| 3070 | request->req_in_subselect--; |
| 3071 | |
| 3072 | return node; |
| 3073 | } |
| 3074 | |
| 3075 | |
| 3076 | //____________________________________________________________ |
no test coverage detected