| 2639 | // |
| 2640 | |
| 2641 | static void put_trigger_blr(gpre_req* request, |
| 2642 | USHORT blr_operator, |
| 2643 | gpre_nod* node, pfn_local_trigger_cb routine) |
| 2644 | { |
| 2645 | request->add_byte(blr_operator); |
| 2646 | const USHORT offset = request->req_blr - request->req_base; |
| 2647 | request->add_word(0); |
| 2648 | if (request->req_flags & REQ_blr_version4) |
| 2649 | request->add_byte(blr_version4); |
| 2650 | else |
| 2651 | request->add_byte(blr_version5); |
| 2652 | request->add_byte(blr_begin); |
| 2653 | request->add_byte(blr_if); |
| 2654 | (*routine) (node, request); |
| 2655 | request->add_byte(blr_begin); |
| 2656 | request->add_byte(blr_end); |
| 2657 | |
| 2658 | // Generate the action for the trigger to be abort |
| 2659 | |
| 2660 | request->add_byte(blr_abort); |
| 2661 | put_short_cstring(request, blr_gds_code, "check_constraint"); |
| 2662 | request->add_byte(blr_end); // for if |
| 2663 | request->add_byte(blr_eoc); |
| 2664 | const USHORT length = request->req_blr - request->req_base - offset - 2; |
| 2665 | request->req_base[offset] = (UCHAR) length; |
| 2666 | request->req_base[offset + 1] = (UCHAR) (length >> 8); |
| 2667 | } |
| 2668 | |
| 2669 | |
| 2670 | //____________________________________________________________ |
no test coverage detected