| 2912 | // |
| 2913 | |
| 2914 | static act* par_start_stream() |
| 2915 | { |
| 2916 | gpre_req* request = MSC_request(REQ_cursor); |
| 2917 | par_options(request, false); |
| 2918 | act* action = MSC_action(request, ACT_s_start); |
| 2919 | |
| 2920 | gpre_sym* cursor = PAR_symbol(SYM_dummy); |
| 2921 | cursor->sym_type = SYM_stream; |
| 2922 | cursor->sym_object = (gpre_ctx*) request; |
| 2923 | |
| 2924 | MSC_match(KW_USING); |
| 2925 | gpre_rse* rec_expr = EXP_rse(request, 0); |
| 2926 | request->req_rse = rec_expr; |
| 2927 | gpre_ctx* context = rec_expr->rse_context[0]; |
| 2928 | gpre_rel* relation = context->ctx_relation; |
| 2929 | request->req_database = relation->rel_database; |
| 2930 | |
| 2931 | gpre_ctx** ptr = rec_expr->rse_context; |
| 2932 | for (const gpre_ctx* const* const end = ptr + rec_expr->rse_count; ptr < end; ptr++) |
| 2933 | { |
| 2934 | context = *ptr; |
| 2935 | context->ctx_next = request->req_contexts; |
| 2936 | request->req_contexts = context; |
| 2937 | } |
| 2938 | |
| 2939 | HSH_insert(cursor); |
| 2940 | PAR_end(); |
| 2941 | |
| 2942 | return action; |
| 2943 | } |
| 2944 | |
| 2945 | |
| 2946 | //____________________________________________________________ |
no test coverage detected