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

Function CMP_compile_request

src/gpre/cmp.cpp:124–291  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

122//
123
124void CMP_compile_request( gpre_req* request)
125{
126 // if there isn't a request handle specified, make one!
127
128 if (!request->req_handle && (request->req_type != REQ_procedure))
129 {
130 request->req_handle = (TEXT*) MSC_alloc(20);
131 sprintf(request->req_handle, gpreGlob.ident_pattern, CMP_next_ident());
132 }
133
134 if (!request->req_trans)
135 request->req_trans = gpreGlob.transaction_name;
136
137 if (!request->req_request_level)
138 request->req_request_level = "0";
139
140 request->req_ident = CMP_next_ident();
141
142 // If this is an SQL blob cursor, compile the blob and get out fast.
143
144 if (request->req_flags & (REQ_sql_blob_open | REQ_sql_blob_create))
145 {
146 for (blb* blob = request->req_blobs; blob; blob = blob->blb_next)
147 cmp_blob(blob, true);
148 return;
149 }
150
151 // Before we get too far, make sure an eof field has been
152 // constructed. If not, do so now.
153
154 ref* reference;
155 if (!eof_field)
156 {
157 eof_field = MET_make_field(gpreGlob.utility_name, dtype_short, sizeof(SSHORT), false);
158 count_field = MET_make_field(gpreGlob.count_name, dtype_long, sizeof(SLONG), false);
159 slack_byte_field = MET_make_field(gpreGlob.slack_name, dtype_text, 1, false);
160 reference = (ref*) MSC_alloc(REF_LEN);
161 reference->ref_value = "0";
162 lit0 = MSC_unary(nod_literal, (gpre_nod*) reference);
163
164 reference = (ref*) MSC_alloc(REF_LEN);
165 reference->ref_value = "1";
166 lit1 = MSC_unary(nod_literal, (gpre_nod*) reference);
167 }
168
169 // Handle different request types differently
170
171 switch (request->req_type)
172 {
173 case REQ_create_database:
174 case REQ_ddl:
175 CMD_compile_ddl(request);
176 return;
177 case REQ_slice:
178 cmp_slice(request);
179 return;
180
181 case REQ_ready:

Callers 1

compile_moduleFunction · 0.70

Calls 15

MSC_allocFunction · 0.85
CMP_next_identFunction · 0.85
cmp_blobFunction · 0.85
MET_make_fieldFunction · 0.85
MSC_unaryFunction · 0.85
CMD_compile_ddlFunction · 0.85
cmp_sliceFunction · 0.85
cmp_readyFunction · 0.85
cmp_procedureFunction · 0.85
expand_referencesFunction · 0.85
update_referencesFunction · 0.85
cmp_fetchFunction · 0.85

Tested by

no test coverage detected