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

Function cmp_procedure

src/gpre/cmp.cpp:1159–1255  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1157//
1158
1159static void cmp_procedure( gpre_req* request)
1160{
1161 act* action = request->req_actions;
1162 gpre_prc* procedure = (gpre_prc*) action->act_object;
1163
1164 // Remember the order of the references. The exec_proc blr verb
1165 // requires parameters to be in parameter order which may be changed
1166 // when there references are expanded.
1167
1168 gpre_lls* outputs = NULL;
1169 ref* reference = request->req_references;
1170 if (reference)
1171 {
1172 for (gpre_lls** list = &outputs; reference; reference = reference->ref_next)
1173 {
1174 MSC_push((gpre_nod*) reference, list);
1175 list = &(*list)->lls_next;
1176 }
1177 }
1178
1179 // Expand any incomplete references or values.
1180
1181 expand_references(request->req_values);
1182 expand_references(request->req_references);
1183
1184 request->req_blr = request->req_base = MSC_alloc(500);
1185 request->req_length = 500;
1186 if (request->req_flags & REQ_blr_version4)
1187 request->add_byte(blr_version4);
1188 else
1189 request->add_byte(blr_version5);
1190 request->add_byte(blr_begin);
1191
1192 if (request->req_values)
1193 {
1194 request->req_vport = make_port(request, request->req_values);
1195 request->req_values = request->req_vport->por_references;
1196 }
1197 else
1198 request->req_count++;
1199 request->req_primary = make_port(request, request->req_references);
1200 request->req_references = request->req_primary->por_references;
1201
1202 // build message definition for each port
1203
1204 for (gpre_port* port = request->req_ports; port; port = port->por_next)
1205 cmp_port(port, request);
1206
1207 if (request->req_values)
1208 {
1209 request->add_byte(blr_begin);
1210 make_send(request->req_vport, request);
1211 }
1212
1213 if (gpreGlob.sw_ids)
1214 {
1215 request->add_byte(blr_exec_pid);
1216 request->add_word(procedure->prc_id);

Callers 1

CMP_compile_requestFunction · 0.85

Calls 11

MSC_pushFunction · 0.85
expand_referencesFunction · 0.85
MSC_allocFunction · 0.85
cmp_portFunction · 0.85
make_sendFunction · 0.85
CMP_stuff_symbolFunction · 0.85
CME_exprFunction · 0.85
MSC_nodeFunction · 0.85
make_portFunction · 0.70
add_byteMethod · 0.45
add_wordMethod · 0.45

Tested by

no test coverage detected