MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / cmp_store

Function cmp_store

src/gpre/cmp.cpp:1625–1672  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1623//
1624
1625static void cmp_store( gpre_req* request, gpre_nod* node)
1626{
1627 gpre_ctx* context = (gpre_ctx*) node->nod_arg[0];
1628 gpre_nod* list = node->nod_arg[1];
1629 gpre_nod* ret_list = node->nod_arg[2];
1630
1631 // Make the store statement under the receive
1632
1633 if (request->req_flags & REQ_sql_returning)
1634 {
1635 if (request->req_type == REQ_insert)
1636 make_send(request->req_primary, request);
1637
1638 request->add_byte(blr_store2);
1639 }
1640 else if (request->req_type == REQ_store2)
1641 request->add_byte(blr_store2);
1642 else
1643 request->add_byte(blr_store);
1644
1645 CME_relation(context, request);
1646
1647 // Make an assignment list
1648
1649 cmp_assignment_list(list, request);
1650
1651 if (request->req_flags & REQ_sql_returning)
1652 {
1653 cmp_returning(request, ret_list);
1654 }
1655 else if (request->req_type == REQ_store2)
1656 {
1657 // whip through actions to find return list
1658
1659 act* action;
1660 for (action = request->req_actions;; action = action->act_next)
1661 {
1662 if (action->act_type == ACT_store2)
1663 break;
1664 }
1665 request->add_byte(blr_begin);
1666 upd* update = (upd*) action->act_object;
1667 gpre_port* port = update->upd_port;
1668 make_send(port, request);
1669 cmp_assignment_list(update->upd_assignments, request);
1670 request->add_byte(blr_end);
1671 }
1672}
1673
1674
1675//____________________________________________________________

Callers 2

cmp_blrFunction · 0.85
cmp_loopFunction · 0.85

Calls 5

make_sendFunction · 0.85
CME_relationFunction · 0.85
cmp_assignment_listFunction · 0.85
cmp_returningFunction · 0.85
add_byteMethod · 0.45

Tested by

no test coverage detected